動態規劃 整數拆分(純DP)

2021-07-05 12:25:54 字數 919 閱讀 2142

/*

name:整數拆分 兩種做法 (dp)

actor:ht

time:2023年9月28日

error reporte: 1.初始化邊界處理 沒弄清

*/#include #include #include #include #include #include using namespace std;

#define n 125

int dp[n][n];

void dd()

for (int i = 2; i <= 120; i++) }

}int main()

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

}printf("%d\n", dp[n][m]);

} return 0;

}//d[n][m] = n的小於拆分 出現所有數字小於等於m

//d[n][m] = d[n-m][m] + d[n][m-1] 就兩種情況,要麼拿,要麼不拿!!!!!!!!!!拿了的話,仍然要關於同乙個m討論:是否繼續拿

/*another way*/

/*#include #include #include #include #include #include using namespace std;

#define n 20

int dp[n];

int main()

} printf("%d\n", dp[n]); }}

//dp[i] = 第i個數的拆分方法

//dp[i] = dp[i] + d[i-j] 其中j是本次要加的數

//大體思路:分別討論要加的數(1,2,3,...),對於每個拆分的數i,既是i = (i-j) + j

// 那麼就是d(i-j)的種數

*/

動態規劃 整數拆分

時間限制 1秒 空間限制 65536k 熱度指數 8566 乙個整數總可以拆分為2的冪的和,例如 7 1 2 4 7 1 2 2 2 7 1 1 1 4 7 1 1 1 2 2 7 1 1 1 1 1 2 7 1 1 1 1 1 1 1 總共有六種不同的拆分方式。再比如 4可以拆分成 4 4,4 1...

動態規劃求解整數拆分問題

include define maxn 10 採用動態規劃求解整數拆分問題。設f n,k 為n的k拆分的拆分方案個數 其中,n表示被劃分的數,k表示被劃分出來的數中的可能出現的最大值,f n,k 的值表示劃分的方法個數 1 當n 1或者k 1時,顯然f n,k 1。2 當n 3 當n k時,其拆分方...

python 動態規劃實現整數拆分

我們先來看這樣乙個問題 把5拆分成若干無序正整數的和 若干可以包含1 請問有多少種拆分方法?直接用列舉法實現 5 5 5 4 1 5 3 2 5 3 1 1 5 2 2 1 5 2 1 1 1 5 1 1 1 1 1 很顯然,結果為7。注意這裡5 4 1和5 1 4是相同的,只計算為一種方法。如果計...