0

nxm 行列の最初のすべてがゼロの行を見つける疑似コードがあります。

int first_zero_row = -1; /* none */
int i, j;
for(i=0; i<n; i++) {
    for (j=0; j<n; j++) {
       if (A[i][j]) goto next;
    }
    first_zero_row = i;
    break;
next: ;
}

これは機能するはずですが、goto ステートメントを使用するのが最善の方法だとは思いません。私は C にあまり詳しくありませんが、私の目標はコードをできるだけ C で構造化することです。これが最善の方法でしょうか、それともより高速またはより一般的な方法はありますか?

4

4 に答える 4

1

first_zero_row内側のループが完了したときだけ設定するだけで、

int first_zero_row = -1; /* none */
int i, j;
for(i=0; i<n; i++) {
    for (j=0; j<n; j++) {
       if (A[i][j]) break;
    }
    if (j == n) {
        first_zero_row = i;
        break;
    }
}

を避けたい場合goto

于 2013-04-04T20:18:36.093 に答える
0
int first_zero_row = -1; /* none */
int i, j;
for(i=0; i<n; i++) {
    for (j=0; j<n; j++) {
       if (A[i][j] != 0){
           first_zero_row = i;
       } 
    }
    break;
next: ;
}

これはどう?

于 2013-04-04T20:14:50.377 に答える