当前位置:首页 » 编程软件 » 编程组合问题

编程组合问题

发布时间: 2023-02-26 17:14:54

c语言编程10选6全组合并且满足6个数字和问题

代码如下:

#include <stdio.h>


//要求六个数字相加的和

#define AIM 39


int main(){

int number[10]; //用来存放1到10

int su[6];

int i,sum,j=0,k,flag=1;

for(i=0;i<10;i++)

number[i]=i+1;

for(i=0;i<6;i++)

su[i]=0;

for(su[0]=0;su[0]<10;su[0]++)

for(su[1]=0;su[1]<10;su[1]++)

for(su[2]=0;su[2]<10;su[2]++)

for(su[3]=0;su[3]<10;su[3]++)

for(su[4]=0;su[4]<10;su[4]++)

for(su[5]=0;su[5]<10;su[5]++)

{

//j++;

//printf("%d ",j);

sum=0;

for(i=0;i<6;i++)

sum+=number[su[i]];

//printf("%d ",sum);


//如果相加的和满足要求则输出组合

if(sum==AIM){

//判断六个数字之中是否有重复的,并且排除排列顺序不同的组合

for(k=0;k<6;k++)

for(i=k+1;i<6;i++)

if(number[su[i]]<=number[su[k]])

flag=0;

if(flag==1){

for(i=0;i<6;i++)

printf("%d ",number[su[i]]);

j++;

printf(" ");

}

flag=1;

}

}

printf("总共有%d个满足要求的组合 ",j);

return 0;


}

其中宏定义#define AIM后面的数字为需要的总和

本代码选出的组合中数字不能重复

和为39的组合运行结果如下:

java最优组合编程问题

没人回答是因为这个没有现成代码,大伙儿也不愿意为了一个问题真的去写
我说一下思路把
1、创建一个map,存储每个点可以合作的点集,如
HashMap<String,List<String>> hp = new ...
hp.add("A", new ArrayList<String>[]{"B", "E", "F", "G"});
b
c..都这么建一遍
2、建一个Stack,按照规则1,把每种排列都枚举出来
3、把所有结果按照个数排序

⑶ c语言编程的排列组合问题

程序有一些乱,实在不知道你要做什么。
你要说排列组合吧,还有好多重复的,怎么没完没了了呢?


请说得更仔细一些好吗?

⑷ c语言编程排列组合

void Show(int n,int len ,char str[], char p[],int *i){/*函数功能说明: 密码穷举法 递归算法参数说明:len 密码可选元素的个数,实际等于 strlen(str); n 密码位数。 STR[]密码表。 *p 密码排列组合的临时存档*/int a;n--;for(a=0; a < len; a++){p[n]=str[a]; if(n==0)printf("%d:%s ",(*i)++,p); if(n0)Show(n,len , str,p,i);}} /*驱动程序 用于测试*/ int main(void){char str[]="abcdef";//密码表 可选元素集合可根据选择修改 int n=4;//密码位数,根据具体应用而定。 int len=strlen(str);//用于密码元素集合计数。 char p[20];//存放排列组合的密码,用于输出。 int num=0;//存放统计个数的整数值, int *i=&num;//计数器 地址。 p[n]='\0';//这个不用说啦。 printf("\n%d 位密码,每个密码有%d个选择的话,共有:%d个组合。\n",n,len,*i);return 0;}
以上回答你满意么?

⑸ C语言编程求解一个排列组合问题。急!

#include<stdio.h>
#include<stdlib.h>
#include <string.h>

void process(int *,int,int);
char *s;
int size;
void main(void)
{
int n, m;
printf("Please enter n and m:");
scanf("%d%d",&n,&m);

while(n<m|| n>9)
{
if(n>9) printf("N must less than 10\n");
else printf("N must greate or equal M\n");
printf("Please enter n and m:");

scanf("%d%d",&n,&m);
}
int *p=new int[n];
s=new char[n+1];
s[0]='\0';
for(int i=0;i<n;i++)
{
p[i]=i+1;
}
process(p,m,n);
system("pause");
}

void process(int * p,int m,int n)
{

if(m==0)
{
printf("\n");

return;
}
for(int i=0;i<n;i++)
{
if(p[i]!=0){

printf("%d",p[i]);
size=strlen(s);
s[size++]=p[i]+'0';
s[size]='\0';
p[i]=0;
process(p,m-1,n);
p[i]=i+1;
size=strlen(s);
if(size>0)s[--size]='\0';
if(size>0)
{
bool isprint=false;
for (int j=i+1;j<n;j++)
{
if(p[j]!=0){
{
isprint=true;
break;
}
}
}
if(isprint)printf("%s",s);
}

}

}

}

不要意思没加注释,要睡觉了。有什么不明白的再追问吧。我要sleep了。呵呵。

不好意思没看到最后一句等效的。看来我把问题做复杂了。呵呵。

下面的代码是在上面的基础上改的。有些乱了,不过运行还是没问题的。

#include<stdio.h>
#include<stdlib.h>
#include <string.h>

void process(int *,int,int,int);
char *s;
int size;
void main(void)
{
int n, m;
printf("Please enter n and m:");
scanf("%d%d",&n,&m);

while(n<m|| n>9)
{
if(n>9) printf("N must less than 10\n");
else printf("N must greate or equal M\n");
printf("Please enter n and m:");

scanf("%d%d",&n,&m);
}
int *p=new int[n];
s=new char[n+1];
s[0]='\0';
for(int i=0;i<n;i++)
{
p[i]=i+1;
}
process(p,m,n,0);
system("pause");
}

void process(int * p,int m,int n,int start)
{

if(m==0)
{
printf("\n");

return;
}
for(int i=start;i<n-m+1;i++)
{
if(p[i]!=0){

printf("%d",p[i]);
size=strlen(s);
s[size++]=p[i]+'0';
s[size]='\0';
p[i]=0;
process(p,m-1,n,i+1);
p[i]=i+1;
size=strlen(s);
if(size>0)s[--size]='\0';
if(size>0)
{
int count=0;
bool isprint=false;
for (int j=i+1;j<n;j++)
{
if(p[j]!=0){
{
isprint=true;
count++;
}
}
}
if(count==0||count<m)isprint=false;
if(isprint)printf("%s",s);
else return;
}

}

}

}

⑹ 编程中排列组合的问题(4个数字中(数字范围0-9),每3个为一组,允许数字重复使用,求所有组合)

从4个数字中取3个数,且能重复选用。所以每取一位都有4种选择,共有4³=64个数

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:746
制作脚本网站 发布:2025-10-20 08:17:34 浏览:1009
python中的init方法 发布:2025-10-20 08:17:33 浏览:715
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:876
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:774
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1124
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:349
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:227
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:911
python股票数据获取 发布:2025-10-20 07:39:44 浏览:873