Re: [問題] 遞迴改寫, 複雜度
※ 引述《wsx02 ()》之銘言:
: 原題 http://ppt.cc/-87d
: Q3(p,n)
: {
: if(n==0) return 0
: q = -無窮大
: for(i=1~n)
: q = max( q, p[i]+Q3(p,n-1) )
: retrun q
: }
: 請問這個程式的複雜度是多少?
: 應該怎麼改成比較好的寫法呢?
: 謝謝
重解一次: 首先看原式, Q3(p, n-1) 對 Q3(p, n) 是恆定的值,卻被呼叫了n次.
其實可以抽取出來,
Q3(p, n)
if n == 0
return 0
q = -32767
q1 = Q3(p, n-1)
for i = 1 to n
q = max(q, p[i] + q1)
return q
然後就解了. 這樣變成 O(n^2), 比原來的 O(n^n) 好得太多.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.167.55.99
→
10/09 23:48, , 1F
10/09 23:48, 1F
→
10/09 23:51, , 2F
10/09 23:51, 2F
推
10/10 09:01, , 3F
10/10 09:01, 3F
→
10/14 11:49, , 4F
10/14 11:49, 4F
→
10/14 12:42, , 5F
10/14 12:42, 5F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 3 篇):