求助一背包算法的变形算法代码. 问题:给定n个不重复的数字(如1-30),给定一个常数M(如100),从n个数字中任选x个不重复(如7个)的数字使这x个数字的和为M,列出所有的x个数字的组合.请给出C代码,谢谢!应该用递归. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 // 背包问题递归求解#include <stdio.h>// 从1-N中取X个数,和为M//enum{N=5,X=3,M=9};//enum{N=7,X=3,M=12};//enum{N=7,X=4,M=15};enum{N=30,X=7,M=100};//计算耗时较长[我的机器55秒]int count;int GetNum(int max,int min,int value){ int i; int b=0; for(i=max;i>0;i--) { if(i<value) { if(GetNum(i-1,min-1,value-i)) { b=1; printf("%2d, ",i); } } if(min==1&&i==value) { count++; printf("\n%2d, ",i); return 1; } } return b;}void main(void){ if( GetNum(N,X,M) ) printf("\n 有解:%d\n",count); else printf("\n无解\n"); printf("输出说明:每行数目不足位置的数取其正下方第一数值\n");} 网络程序收发数据奇慢?? 菜鸟菜问 关于判断串口传输的DATA VS2008中,对话框上的按钮怎么响应错误 缩略图的问题 各位大侠,怎么将ListCtrl的横向滚动条消去,即使有的列没有显示出来!急!!! CheckList如何实现 如何利用ADO得到表的列名,类型,大小,是否主键等 傻瓜问题----波形音频采样率 我不是太懂:如何使窗口变成不能改变大小。。。 小弟主框架是用的CFormView,我想在一个click事件后关闭这个框,再打开另外一个对话框做主框架,应该如何做? 模态对话框定位和设置大小问题!!! 请帮小弟
//enum{N=7,X=3,M=12};
//enum{N=7,X=4,M=15};
enum{N=30,X=7,M=100};//计算耗时较长[我的机器55秒]int count;
int GetNum(int max,int min,int value)
{
int i;
int b=0;
for(i=max;i>0;i--)
{
if(i<value)
{
if(GetNum(i-1,min-1,value-i))
{
b=1;
printf("%2d, ",i);
}
}
if(min==1&&i==value)
{
count++;
printf("\n%2d, ",i);
return 1;
}
}
return b;
}void main(void)
{
if( GetNum(N,X,M) )
printf("\n 有解:%d\n",count);
else
printf("\n无解\n");
printf("输出说明:每行数目不足位置的数取其正下方第一数值\n");
}