0

私はアルゴリズムを学んでいて、トップコーダーでこの記事に出くわしました。

これは記事の例です

int result=0;                           //  1
for (int i=0; i<N; i++)                 //  2
  for (int j=i; j<N; j++) {             //  3
    for (int k=0; k<M; k++) {           //  4
      int x=0;                          //  5
      while (x<N) { result++; x+=3; }   //  6
    }                                   //  7
    for (int k=0; k<2*M; k++)           //  8
      if (k%7 == 4) result++;           //  9
  }                                     // 10

6行目のwhileサイクルの時間計算量は明らかにO(N)であり、実行されるのはN / 3+1回以下です。

著者が時間計算量はO(N)であると言っているので、私はここで混乱しています。私にはO(N ^ 4)のようです。私が見落としていることを説明してください。私はアルゴリズムを始めているだけです。

4

1 に答える 1

1

6行目のwhileサイクルの複雑さはO(N)です。

于 2013-01-27T20:25:34.290 に答える