2009-11-03

台大97電機 24題

題目是這樣

s=0;
for (i=1;i<=n;i++) { --> n+1
s=s+i; --> n
for(j=1;j<=i;j++){ --> 1+2+.....+n
s=s+j*i; } ---> 2*(1+2+....+n-1)
}
s=s+10; ---> 1

求所有加法和乘法數


看老師解答 似乎只有算 s=s+i 和 s=s+j*i 的部份
不用考慮 for 裡面變數加法嗎?
另外 橘色部份是我自己算的
若沒考慮for 答案還是不一樣
請問錯在哪呢?

麻煩解答 謝謝

1 則留言:

線代離散助教(wynne) 提到...

這好像是選擇題, 如果把 for 迴圈裡的算進去會爆掉, 沒有選項可以選, 所以推測應該是不要算 (且一般如果在分析一個演算法的時間, 我們通常考慮的也是實際上在計算問題時所做的operations的次數); 此題的演算法跑到最後時, 因為 j 會等於 i, 而 i 會等於 n, 所以你寫的第 4 行要改成 2(1+2+...+n), 則
n + 2(1+2+...+n) + 1 = n + n(n+1) + 1 = (n+1)^2