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++;
                 }

第一个代码和第二个代码的不同之处仅在于 1) 中的 while 循环和 2) 中的 for 循环。但是根据我的说法,由于它们的输出应该是相同的,但它是不同的。以上两个代码都只是总代码的一部分。但我应该告诉你,由于 1) 的输出是 2,而由于 2) 是 3。

我不知道为什么答案不同,因为发生的一切都是一样的。

4

3 回答 3

8

for 循环将 i 递增两次。一旦在 for 循环定义本身 ( i++) 中,然后通过j.

while 循环仅通过j. 所以这两个例子是不一样的。

于 2012-07-12T10:45:47.053 回答
1

我认为要使等于循环,您应该省略 for 中的增量:

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

在你的 for 循环中,变量 i 在你的代码中增加了两次:第一次在

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

第二次在

j = i+1其次是i = j

于 2012-07-12T12:21:35.677 回答