原題鏈結
考察:完全揹包dp
思路:n可以看成體積為n,從1~n-1的數選的揹包.因為f[i][j]代表從前i個數選,體積恰好為j的方案數.
感覺我**重新整理前後是一模一樣的,重新整理前是輸出錯誤答案,重新整理後又對了 = =
1 #include 2 #include 3 #include 4using
namespace
std;
5 typedef long
long
ll;6
const ll mod =2147483648ll;
7const
int n = 4010;8
ll f[n];
9int
main()
10
總結:注意f[i][j]是否有恰好的含義,恰好只需要初始化f[0][0] = 0
不是恰好的話,需要+w[i]
題解 AcWing279 自然數拆分
題面 因為題目中說參與加法運算的數可以重複,由此可以想到完全揹包計數問題。完全揹包計數問題與 01 揹包計數問題只有乙個不同 01 揹包計數問題的第二維迴圈是倒敘迴圈,而完全揹包計數問題的第二維迴圈是正序迴圈。這涉及到的是迴圈時後效性的問題,具體的證明留給讀者思考。注意每一步計數都要取模,且最後輸出...
AcWing P279 自然數拆分(DP)
給定乙個自然數n,要求把n拆分成若干個正整數相加的形式,參與加法運算的數可以重複。注意 拆分方案不考慮順序 至少拆分成2個數的和。求拆分的方案數 mod 2147483648的結果。輸入格式 乙個自然數n。輸出格式 輸入乙個整數,表示結果。資料範圍和約定 1 n 4000 輸入樣例 7輸出樣例 14...
自然數拆分
描述 description 輸入自然數n,然後將其拆分成由若干數相加的形式,參與加法運算的數可以重複。輸入格式 inputformat 輸入只有乙個整數n,表示待拆分的自然數n。n 80 輸出格式 outputformat 輸出乙個數,即所有方案數 樣例輸入 sampleinput 複製資料 7 ...