HDU1028 Ignatius and the Princess III 题意: 给一个整数n,将其拆成整数的和,问有多少种拆分方法。 解题思路: 每次将两个()里面的合并为一个,并只保存指数小于等于 n 的项 。 AC代码: #include<iostream> #include<cstdio> using namespace std; #define fread() freopen("in.txt","r",stdin) #define sf scanf #define pf printf typedef long long ll; const int N = 10001; int n,c1[N], c2[N]; int main() { while(~sf("%d",&n)){ for(int i=0;i<=n;i++){ c1[i] = 1; c2[i] = 0; } for(int i=2;i<=n;i++){ for(int j=0;j<=n;j++){ for(int k=0;j+k<=n;k+=i){ c2[j+k] += c1[j]; } } for(int i=0;i<=n;i++){ c1[i] = c2[i]; c2[i] = 0; } } pf("%d\n",c1[n]); } return 0; }