1

1)

 i = 0;

 while(i < N){

   j = i+1;

   while(j < N && p[i].first == p[j].first && p[j].second - p[i].second < K) j++;

     i = j; res++;

             }

2)

for(i=0;i<N;i++){

   j = i+1;

   while(j < N && p[i].first == p[j].first && p[j].second - p[i].second < K) j++;

     i = j; res++;
                 }

最初のコードと 2 番目のコードが異なるのは、1) の while ループと 2) の for ループだけです。しかし、私によると、それらの両方による出力は同じはずですが、異なります。上記のコードは両方とも、コード全体の一部にすぎません。しかし、1) による出力は 2 ですが、2) による出力は 3 です。

起こっていることはすべて同じなので、答えが異なる理由はわかりません。

4

3 に答える 3

8

for ループは i を 2 回インクリメントします。for ループ定義自体 ( i++) で 1 回、次に を介して間接的にj.

while ループは、 を介して間接的なインクリメントのみを行いますj。したがって、2 つの例は同じではありません。

于 2012-07-12T10:45:47.053 に答える
1

forのインクリメントを省略する必要があるループに等しいと思います:

for(i=0; i<N; ){
于 2012-07-12T10:47:44.223 に答える
0

for ループでは、コード内で変数 i が 2 回インクリメントされます。

for(i=0;i<N;i++){

そして2回目

j = i+1に続くi = j

于 2012-07-12T12:21:35.677 に答える