P1025 数的划分

P1025 数的划分
f[i][j]表示把数i分成j份的方案数,分成两种情况,第一种是最小值是1,另一种是最小值不是1,对于不是1的情况,先都放一个1,那么f[i][j]=f[i-1][j-1]+f[i-j][j].
初始化f[i][i]=1

 1 #include<iostream>
 2 using namespace std;
 3 int f[1000][1000];
 4 int n,k;
 5 int main()
 6 {
 7     cin>>n>>k;
 8     for(int i=1;i<=n;i++)
 9     f[i][i]=1;
10     
11     for(int i=1;i<=n;i++)
12       for(int j=1;j<=k;j++)
13         {
14             if(i>j)
15             f[i][j]=f[i-1][j-1]+f[i-j][j];
16         }
17     cout<<f[n][k];    
18     return 0;
19 }

 

posted @ 2017-10-30 16:46  WeiAR  阅读(166)  评论(0编辑  收藏  举报