中易网

排列组合NP难题,C++求解,求具体代码

答案:2  悬赏:0  
解决时间 2021-01-29 06:10
排列组合NP难题,C++求解,求具体代码
最佳答案
列出 N个数中取M个的全部组合

void combine(int a[], int n, int m, int b[], int M);

参数:
a 存放候选数字
n 总项数
m 取出项数
b 存放选出结果
M= m

#include "stdio.h"

#define MAX 100

void combine(int a[], int n, int m, int b[], int M);

int main(void)
{
int i;
int a[MAX], b[MAX];

for (i = 1; i < 100; i++)
a[i - 1] = i;

combine(a, 5, 4, b, 4);
}

void combine(int a[], int n, int m, int b[], int M)
{
int i, j;

for (i = n; i >= m; i--)
{
b[m - 1] = i - 1;
if (m > 1)
combine(a, i - 1, m - 1, b, M);
else
{
for (j = M - 1; j >= 0; j--)
printf("%d ", a[b[j]]);
printf("\n");
}
}
}
追问:哥们,别逗我行不......
全部回答
是模拟手动清点吗?难道不是可以直接算出来的吗?
比如说,这么算:
根据题意,需要在集合A={(a,b,c,d)|a<b<c<d<=M},其个数是p=Cm4。在这p个数里选出条件1和2的组合。即,集合B={((a,b,c,d),(e,f,g,h)|a<b<c<d<=M,e<f<g<h<=M},个数为x里选出符合条件1和2的个数。
分析,条件1,可设组合形式为(a(b,c,d))-(a,(f,g,h)(内部无序),(a,b,c,d)-(e,f,g,h)(内部有序)。两个部分。直接相加就是结果。
条件2,类似。
总之,算出来就好了啊。如果是清点,确实……太占空间。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
杜蒙县人才交流服务中心地址在什么地方,想过
求解广义积分,最后如何求极限?
夫爱人者,人必从而爱之;利人者,人必从而利之
DNF找一名大腿带我打广西1区的安图恩,有没有
贺逸 这个名字好不好
怎样教育六到十二岁的孩子
泰安是不是有两个火车站?这趟车是到泰安站?
DNA鉴定父子关系:能确认吗?会不会父子鉴定
沈腾说的你还不了解我么,这么多年了我出门什
请哪位高手帮我翻译下日语
我贷款金额是45000元但是银行借据上面却是569
摩登家庭7-9季的百度云资源 有吗
中国邮政储蓄银行(东光营业所)地址有知道的么
日记。不上夜自习,可以去外面吃饭玩耍,好开
2016年朝鲜钱币兑换人民币
推荐资讯
求一个带湖的四字词语,最好是那种名称响亮,
国内最知名,人气最旺的文学论坛
绯色异闻录漫画在哪个软件里能下载
lol愤怒合剂与死亡之舞的被动是同一个意思吗
三公仔小儿七星茶可以和牛奶一起喝吗?
抹墙的工时费一个平方多少钱
社旗县城郊=中中招考试成绩查询,怎样查询成
通乳师的针通了乳头后会感染hiv病毒吗
光荣村怎么去啊,我要去那办事
苹果推信每条信息可以发多少个字?
丁卯丁末乙酉已卯!喜用神是什么?是不是财多
用土豆视频缓存视频和在线观看视频哪个更省流
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?