私は最近、このプリンストン コースのアルゴリズムを使い始めましたが、次のパターンを観察しました。
オン)
double max = a[0];
for (int i = 1; i < N; i++)
if (a[i] > max) max = a[i];
O(N^2)
for (int i = 0; i < N; i++)
for (int j = i+1; j < N; j++)
if (a[i] + a[j] == 0)
cnt++;
O(N^3)
for (int i = 0; i < N; i++)
for (int j = i+1; j < N; j++)
for (int k = j+1; k < N; k++)
if (a[i] + a[j] + a[k] == 0)
cnt++;
ここでの一般的なパターンは、ループ内のネストが大きくなるにつれて、指数も大きくなるということです。20 個の for ループがある場合、複雑さは 0(N^20) になると想定しても安全ですか?
PS: 20 は私が選んだ単なる乱数であることに注意してください。はい、コード内で 20 の for ループをネストすると、明らかに何か問題があります。