作者kenboy99999 (Poppin~蛆~)
看板C_and_CPP
標題[問題] 有關時間複雜度 BIG O
時間Mon Mar 22 00:11:54 2010
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 )
( 未必需要依照此格式,文章條理清楚即可 )
遇到的問題: (題意請描述清楚)
(a) for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][j]=b[i][j]+c[i][j];
(b) for(i=0;i<n;i++)
for(j=0;j<n;j++)
for(k=a[i][j]=0;k<n;k++)
a[i][j]+=b[i][k]*c[k][j];
(c)
sum = 0;
for( i = 1; i < n; i++)
{
for(j = 1; j < i*i; j++)
{
sum++;
for( k = 0; k < j; k++)
sum++;
}
}
(d)
float rsum(float list[], int n)
{
if(n)
return rsum(list, n-1)+ list[n-1];
return list[0];
}
(e)
sum=0;
for(k=1;k<=n;k*=3)
for(j=1;j<=n;j++)
sum++;
(f)
sum=0;
for(k=1;k<=n*n;k*=5)
for(j=1;j<=n;j++)
sum++;
希望得到的正確結果:
我的答案依序是
a)N平方
b)不太懂,懇請告知並解釋一下
c)同B
d)N!
e)N平方/3
f)N平方/5
希望可以幫我看對不對,如有錯可否告知想法,感激不盡
程式跑出來的錯誤結果:
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
有問題的code: (請善用置底文標色功能)
補充說明:
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.163.225
推 VictorTom:b) k=a[i][j]=0, 啊所以k還是從0~n-1啊, 所以時間複雜度 03/22 00:36
→ VictorTom: 不就是 O(n^3) 這樣?? 03/22 00:37
→ VictorTom:關於e/f, 還沒看內容, 但是1/3或1/5這種常數項, 在算O 03/22 00:37
→ VictorTom:時是可以去掉的, 所以你的寫法等同於 O(N^2) //N平方@@" 03/22 00:38
→ kenboy99999: 所以E 跟F算是相同的? 那C的部分呢? 03/22 00:39
→ VictorTom:上面寫了這麼多, 看起來沒用了, 因為你e/f應該是錯的orz 03/22 00:40
推 conanist:資結第一章看一下N! N^X N LOG N 大溉這些 一個迴圈是N 03/22 01:07