动态规划【数的划分】

来源:互联网 发布:哈雷尔裸族体测数据 编辑:程序博客网 时间:2024/05/22 05:32

将整数n分成k份,且每份不能为空,任意两种划分方案不能相同(不考虑顺序)。
例如:n=7,k=3,下面三种划分方案被认为是相同的。
1 1 5

1 5 1

5 1 1
问有多少种不同的分法。

输入:n,k (6<n<=200,2<=k<=6)


输出:一个整数,即不同的分法。

 7 3

4



状态转移方程为:F[I][J]=max(F[i-1][j]+g[i][j-i],f[i-1][j]);

#include<iostream>using namespace std;int main(){    int n,k,g[7][201],i,j;    while(cin>>n>>k){                for (j=0; j<=n; j++)           g[1][j]=1;           for (i=2; i<=k; i++)              for (j=0; j<=n-k; j++){                   if(j>=i) g[i][j]=g[i-1][j]+g[i][j-i];                  else g[i][j]=g[i-1][j];              }              cout<<g[k][n-k]<<endl;           }}


0 0
原创粉丝点击