CHOJ 5202 自然數拆分Lunatic版 【完全揹包模型】
描述
給定一個自然數N,要求把N拆分成若干個正整數相加的形式,參與加法運算的數可以重複。求拆分的方案數 mod 2147483648的結果。1≤N≤4000。
輸入格式
一個整數n。
輸出格式
輸出一個數,即所有方案數
因為這個數可能非常大,所以你只要輸出這個數 mod 2147483648 的餘數即可。
樣例輸入
7
樣例輸出
14
樣例解釋
輸入7,則7拆分的結果是
7=1+6
7=1+1+5
7=1+1+1+4
7=1+1+1+1+3
7=1+1+1+1+1+2
7=1+1+1+1+1+1+1
7=1+1+1+2+2
7=1+1+2+3
7=1+2+4
7=1+2+2+2
7=1+3+3
7=2+5
7=2+2+3
7=3+4
一共有14種情況,所以輸出14 mod 2147483648,即14
題解:1 ~ n 這 n 個正整數可以看作 n 件物品,每種物品都可以無限次使用,揹包容量為 n。求方案數的時候將 max 函式改為求和就好了。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#define mod 2147483648
#define ll long long
using namespace std;
const int maxn = 4000+7;
ll f[maxn];
int n;
int main()
{
int i, j;
cin >> n;
memset(f, 0, sizeof f);
f[0] = 1;
for(i = 1; i <= n; i++)
for(j = i; j <= n; j++)
f[j] = (f[j] + f[j-i]) % mod;
cout << (f[n] > 0 ? f[n]-1 : 2147483648) << endl;
return 0;
}
相關文章
- 揹包DP——完全揹包
- 分組揹包、完全揹包
- 01揹包、完全揹包、多重揹包詳解
- 揹包問題(01揹包與完全揹包)
- dp-完全揹包
- javascript演算法基礎之01揹包,完全揹包,多重揹包實現JavaScript演算法
- 【程式碼隨想錄】完全揹包
- 從【零錢兌換】問題看01揹包和完全揹包問題
- 演算法-動態規劃-完全揹包演算法動態規劃
- P2404 自然數的拆分問題
- 揹包DP——混合揹包
- Codeup 貨幣系統(完全揹包問題)
- TYVJ 1096 數字組合【0-1揹包模型】模型
- PIPIOJ 1079: PIPI的存錢罐 完全揹包
- 【LeetCode動態規劃#10】完全揹包問題實戰,其三(單詞拆分,涉及集合處理字串)LeetCode動態規劃字串
- 揹包
- 01揹包、有依賴的揹包
- 藍橋杯 演算法提高 拿糖果(完全揹包dp)演算法
- 圖解二維完全揹包問題——降維打擊圖解
- 01 揹包
- 揹包DP
- 01揹包詳解第一版
- P2404 自然數的拆分問題c++題解C++
- 洛谷P2404 自然數的拆分問題——題解
- 面試官:完全揹包都不會,是你自己走還是我送你?面試
- 揹包問題
- 程式碼隨想錄演算法訓練營第四十六天| 139.單詞拆分 多重揹包 揹包問題總結篇!演算法
- leedcode518:完全揹包,零錢兌換,python逐行註解Python
- ACM 揹包問題ACM
- 01揹包問題
- 通天之分組揹包
- [Offer收割]程式設計練習賽1 hihocoder 1270 建造基地 (完全揹包)程式設計
- 01 揹包的變形
- 揹包問題大合集
- 揹包題型總結
- 揹包 學習筆記筆記
- 揹包計數問題的多項式最佳化
- 01揹包面試題系列(一)面試題