1. 程式人生 > >隨手練——HDU 1284 動態規劃入門

隨手練——HDU 1284 動態規劃入門

code 一行 span 優化 pre space ios iostream include

暴力遞歸->記憶搜索->動態規劃

沒接觸之前覺得很高大上,所謂的動態規劃其實就是暴力遞歸的優化,用空間換時間,將記憶搜索做到極致。當然,做出這個遞歸的優化是有難度的。


這應該算是最基礎的動態規劃了,M [ i ] [ j ] 表示使用 i 種貨幣,j 元有多少種搭配。

用一維數組也可以解決,也就是這一行跑三遍,M [ i ] [ j ] += M [ i ] [ j - a [ i ] ] ;

#include <iostream>
using namespace std;

int M[3][32768];
int main() {
    int N;
    
int a[] = { 1,2,3 }; while (cin >> N) { for (int i = 0; i <= N; i++) M[0][i] = 1; for (int i = 1; i < 3 ; i++) { for (int j = 0; j <= N; j++) { if (j - a[i] < 0) M[i][j] = M[i - 1][j]; else M[i][j]
= M[i - 1][j] + M[i][j - a[i]]; } } cout << M[2][N] << endl; } return 0; }

隨手練——HDU 1284 動態規劃入門