[問題] Big Oh running time

看板Prob_Solve (計算數學 Problem Solving)作者 (Look-three-small)時間5年前 (2019/03/18 22:53), 5年前編輯推噓1(108)
留言9則, 2人參與, 5年前最新討論串1/2 (看更多)
sum = 0; for (i = 0; i < n; i++){ for (j = 0; j < i*i; j++){ if (j % i == 0){ for (k = 0; k < j; k++){ sum++; } } } } 大家好 這題的Big O 我算出來得到的是 O(n^4),不曉得對不對? 以及 想問一下各位都是如何去思考這種題目的? 如果要嚴謹一點的寫法該如何是好? 想問各位的思路 謝謝! -- 當年我每回翻開課本,腦袋裡就先告訴自己 這是戰場,我是來拼命的 ! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.241.21.71 ※ 文章網址: https://www.ptt.cc/bbs/Prob_Solve/M.1552920807.A.4B6.html

03/19 01:49, 5年前 , 1F
你的程式碼可以以if的判斷式是否成立分兩部分簡化
03/19 01:49, 1F

03/19 01:50, 5年前 , 2F
外圈的兩個for迴圈只有當j是i的倍數時才會進到if判斷
03/19 01:50, 2F

03/19 01:51, 5年前 , 3F
判斷式內的k每次只會讓sum+1
03/19 01:51, 3F

03/19 01:57, 5年前 , 4F

03/19 01:59, 5年前 , 5F
1x2+(1+2)x3+(1+2+3)x4+(1+2+3+4)x5...的累加
03/19 01:59, 5F

03/19 02:04, 5年前 , 6F
每項都是n*(n-1)/2,可以再化減成算式即可O(1)求值
03/19 02:04, 6F
※ 編輯: triumphant10 (111.241.21.71), 03/19/2019 02:15:16

03/19 02:21, 5年前 , 7F
謝謝你!我看懂了!
03/19 02:21, 7F

03/19 10:04, 5年前 , 8F
我看到你在C++版的文發現好像誤會你的意思惹0.0
03/19 10:04, 8F

03/19 14:31, 5年前 , 9F
我有懂你想表達的,雖然不是我想問的XD 嘻嘻
03/19 14:31, 9F
文章代碼(AID): #1SZx3dIs (Prob_Solve)
討論串 (同標題文章)
文章代碼(AID): #1SZx3dIs (Prob_Solve)