工作频率

时间:2017-10-28 16:59:53

标签: c algorithm

对于此代码

int count=0;
for(int i=0;i<N;i++)
    if(a[i]==0)
        count++;

我的消息来源说:

frequency for variable declaration is 2

frequency for assignment statement is 2 

但是对于这段代码:

int count=0;
for(int i=0;i<N;i++)
   for(int j=i+1;j<N;j++)
       if(a[i] + a[j] == 0)
           count++;

它说:

frequency for variable declaration is N+2

frequency for assignment statement is N+2.

我无法理解为什么第二个代码的结果是N + 2。我认为变量声明它应该是3。你能告诉我这两个代码部分的区别吗?

3 个答案:

答案 0 :(得分:0)

请记住ji循环中声明。因此,它将在循环的每次迭代中声明。 N的循环有i次迭代,因此它将被声明为N次。 i将被宣布一次,count将被宣布一次,因此总共会N + 2声明。

同样适用于作业。

答案 1 :(得分:0)

是。这是正确的,因为j的每次迭代都会声明i一次。因此j为N次,icount则为2次。

在使用相同逻辑的第一种情况下,您将看到有2个声明。

对于赋值语句也是如此,一旦理解了声明逻辑,它就很清楚了。

int count=0; <--- declaration +1
for(int i=0;i<N;i++) <--- int i = 0 <-- +1
   for(int j=i+1;j<N;j++)  <-- i=0,1,2..N-1 <-- N times
       if(a[i] + a[j] == 0)
           count++;

答案 2 :(得分:0)

在此 -

int count=0;
for(int i=0;i<N;i++)         
   for(int j=i+1;j<N;j++)    
       if(a[i] + a[j] == 0)
           count++;
内循环中的

j被声明为上循环遍历的次数N次。这是因为对于上循环的每次迭代,内循环再次开始。

counti被宣布一次。因此,您获得N+2频率。