整数划分问题(C语言求解)
来源:互联网 发布:知世故而不世故历圆滑 编辑:程序博客网 时间:2024/05/16 11:39
/**//*
描述 Description
将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。
例如:n=7,k=3,下面三种分法被认为是相同的。
1,1,5; 1,5,1; 5,1,1;
问有多少种不同的分法。
输入格式 Input Format
输入n,k (6<n<=200,2<=k<=6)
输出格式 Output Format
一个整数,即不同的分法。
Input : 7 3
output: 4
*/
/**//*
解题思路:
我用的是一种比较慢的搜索扩展方法:
比如:
7 = 1+6 6 又可以扩展成:6 = 1+5 很显然这是一个递归的过程
7 = 2+5 5 --> 5= 2+3 不过要注意的是:只要在扩展过程中保证当前所扩展的值不小于前一个即可
7 = 3+4
*/
#include <stdio.h>
#define MAX 101
int n,k ;
long total = 0 ;
void fenjie(int s,int t,int end,int *sum)
...{
int p,q ;
if(t == k)/**//*找到一个*/
...{
total ++ ;
/**//*for(q = 1 ; q <= k ; q++)
printf("%d ",sum[q]);
printf(" ");*/
}
else
...{
for(p=s ; p<=end/2 ; p++)
...{
sum[t] = p;
sum[t+1] = end-p;
fenjie(p,t+1,sum[t+1],sum); /**//*方法是从当前结点扩展开出,递归进行求解*/
}
}
}
int main(void)
...{
int i,j,sum[MAX] = ...{0};
scanf("%d %d",&n,&k);
for(i=1 ; i<=n/2 ; i++)
...{
sum[1] = i ;
sum[2] = n-i;
fenjie(i,2,sum[2],sum);
}
printf("%ld ",total);/**//*output the result*/
return 0 ;
}
- 整数划分问题(C语言求解)
- 递归求解整数划分问题
- C语言实现整数划分问题
- 整数划分问题的递归算法-c语言
- (C语言)整数划分问题 递归和递推
- C/C++ 整数划分问题
- C/C++ 整数划分问题
- 整数划分(C语言实现)
- 整数划分问题--递归求解 例题:HDU 1028
- 【算法】 递归求解整数划分
- 整数划分的问题(c)
- c++: 递归算法整数划分问题
- C语言 -- 数学问题求解
- C语言求解约瑟夫问题
- 一个C语言问题,求解
- 集合划分问题求解
- 整数划分的非递归算法(C语言)
- 整数划分问题
- 70个流行的AJAX应用的演示和源码下载
- sqlserver2000數據類型同c#中的數據對應關系表
- BPEL和Java[收藏]
- 硬盘安装Ubuntu7.04手记
- W-100, the New watch phone from Hyundai
- 整数划分问题(C语言求解)
- 敏捷软件开发模型--SCRUM
- 将mysql数据导入到MS Sql Server中
- 俄罗斯方块的数据结构及实现 struct of a tetris
- OCSP 测试服务器
- JSP内置对象
- 《面向对象分析与设计》摘录
- CRC编码规则举例
- Using a Java class to control directory searches for people and groups