題目是這樣
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 則留言:
這好像是選擇題, 如果把 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
張貼留言