fjnu 1978 数的拆分
来源:互联网 发布:统计软件运行时间 编辑:程序博客网 时间:2024/05/29 13:31
Description
将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。
例如:n=7,k=3,下面三种分法被认为是相同的。
1,1,5
1,5,1
5,1,1
问有多少种不同的分法。
Input
n,k (6<n<=200,2<=k<=6)
Output
一个整数,即不同的分法。
Sample Input
7 3
Sample Output
4
Hint
四种分法为:
1,1,5
1,2,4
1,3,3
2,2,3
KEY:用动态规划的方法,f[i][j]=f[i][j]+f[i-m][j-1]; 其中i表示所要拆分的数,分成j段,m表示取出的数;
Source:
#include<iostream>
#define N 200
#define K 6
using namespace std;
int f[201][7];
int n,k;
void GetList()
...{
int i,j;
f[0][0]=1;
int m;
for(m=1;m<=N;m++)
for(i=m;i<=N;i++)
for(j=K;j>=1;j--)
...{
f[i][j]=f[i][j]+f[i-m][j-1];
}
}
int main()
...{
GetList();
while(cin>>n>>k)
...{
cout<<f[n][k]<<endl;
}
return 0;
}
#include<iostream>
#define N 200
#define K 6
using namespace std;
int f[201][7];
int n,k;
void GetList()
...{
int i,j;
f[0][0]=1;
int m;
for(m=1;m<=N;m++)
for(i=m;i<=N;i++)
for(j=K;j>=1;j--)
...{
f[i][j]=f[i][j]+f[i-m][j-1];
}
}
int main()
...{
GetList();
while(cin>>n>>k)
...{
cout<<f[n][k]<<endl;
}
return 0;
}
- fjnu 1978 数的拆分
- fjnu 1731 第m大的数
- 数的拆分
- 数的拆分
- 数的平方和拆分
- fjnu 1715 对称数
- fjnu 1339 数素数
- fjnu 1461 回文数
- fjnu OJ 数鸭子
- 逆序数的拆分计算
- 逆序数的拆分计算
- 自然数的拆分组数
- 3-5 数的拆分
- 数的拆分(数的划分)
- 拆分一个数组的奇偶数
- FJNU
- fjnu 1734 浮点数合法性判断
- fjnu 1743 百位数精确求和
- fjnu 1340 数制转换
- YY:让google干掉百度
- Factory模式
- TJPzoom: 超酷的图像放大镜特效(Javascript)
- 一路走来
- fjnu 1978 数的拆分
- J2EE开发中文解决方案
- fjnu 1907 童话
- pcap编程深入解析
- fjnu 1475 滑雪
- ZZ(内存分配中的堆栈 VS 数据结构中的堆栈)
- 讲故事谈.NET委托:一个C#睡前故事
- 用web.xml控制Web应用的行为
- fjnu 1977 开心的金明