四 演算法 動態規劃

2021-07-25 22:57:05 字數 1575 閱讀 7997

自頂向下遞迴

自底向上

動態規劃與分治法類似

自頂向下遞迴c#實現:

//  自頂向下遞迴 - 鋼條切割

class program ;

console.writeline(buyupdown(0,pprices));

console.writeline(buyupdown(5, pprices));

console.readkey();

}public

static

intbuyupdown (int n, int pprices)

int ptempmaxprice = 0;

for (int i = 1; i < n + 1; i++)

}return ptempmaxprice;

}}

缺點:效能低,效率低。

動態規劃(帶備忘)的自頂向下的實現:

對計算的結果進行儲存,避免進行二次運算,但是要付出空間帶價。

class program ;

int presult = new

int[pprices.length+1];

console.writeline(buyupdown(0, pprices, presult));

console.writeline(buyupdown(5, pprices, presult));

console.readkey();

}public

static

intbuyupdown (int n, int pprices, int presult)

if (presult[n] != 0)

int ptempmaxprice = 0;

for (int i = 1; i < n + 1; i++)

}presult[n] = ptempmaxprice;

return ptempmaxprice;

}}

自底向上:小問題依次解決大問題。

class program ;

int presult = new

int[pprices.length + 1];

console.writeline(bottomup(0,pprices,presult));

console.writeline(bottomup(1, pprices, presult));

console.readkey();

}public

static

intbottomup (int n, int pprices, int presult)

}//end for j

presult[i] = ptempmaxprices;

}//end for i

return presult[n];

}// end bottomup

}

動態規劃(四)

你是乙個專業的小偷,計畫偷竊沿街的房屋,每間房內都藏有一定的現金。這個地方所有的房屋都圍成一圈,這意味著第乙個房屋和最後乙個房屋是緊挨著的。同時,相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝...

動態規劃 (四)

最近依舊是看了很多資料,然後找了很多動態規劃的感覺,但覺得動態規劃其實並不簡單,雖然看了題解,但是還是無處下手,最後只能每道題都按照模板套進去,不過這也不失為一種方法,但畢竟只是練習題,希望還是能學到動態規劃的本質,能更多地解決一些問題。可能就是由於剛開始沒有學明白,揹包問題和區間dp的那一章的題現...

演算法實驗四 動態規劃 花生公尺(四)

時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述五一長假第四天,tom逛了n個bbs,做了n 2個腦筋急轉彎題,終於發現了每次吃完花生公尺嘴裡都是苦味的原因 自己總會吃到最後一粒花生公尺。五一長假第五天,tom和jerry在倉庫散步的時候發現了n堆花生公尺 這是什麼倉庫啊?這...