用C语言编写一个排列组合的程序

就是四组数字(如:a2b8 5a8f b9ec 5c2f 等16进位数)
排列起来,一共是16位数,可以是a2b85a8fb9ec5c2f;也可以是b9ec5c2fa2b85a8f,所有的组合顺
序有多少种结果?有没有什么程序可以输入上面四组数据,自动生成所有结果?没有顺序,顺序随机

第1个回答  2014-08-15
#include<stdio.h>

int a[5];
int len1,len2,len3;

void input(int len1,int len2,int len3)
{
printf("%d %d %d\n",a[len1],a[len2],a[len3]);
}

void solve(int len1,int len2,int len3)
{
input(len1,len2,len3);
if(len1==2) return;
if(len3<4) len3++;
else if(len2<3)
{
len2++;
len3=len2+1;
}
else if(len1<2)
{
len1++;
len2=len1+1;
len3=len2+1;
}
solve(len1,len2,len3);
}

void main()
{
int i;
for(i=0;i<5;i++) a[i]=i+1;
printf("所构成组合是:\n");
solve(0,1,2);
return ;
}
第2个回答  推荐于2016-06-14
你的意思是说:输入4个数,然后把这4个数任意排列,然后把组合的个数输出?
就是输入1/2/3/4←你可以把它看成16进制数.....(谁说16进制说没个位的)
然后就排成
1234,4321,1432等?
问一下问题:输入的4个数的长度固定吗?(比如都是4位)如果不固定长度一样吗?(比如:1df45.4fda4,324f,da345)追问

长度确定啊,一共是16位数,比如输入(a2b8 5a8f b9ec 5c2f )这四组数,能输出a2b85a8fb9ec5c2f、b9ec5c2fa2b85a8f、a2b85a8f5c2fb9ec、5a8fb9ec5c2fa2b8.......等等所有的结果(其中四组数字必须都用上,意思是必须是16位数)

本回答被提问者采纳

用C语言编写一个排列组合的程序
len2++;len3=len2+1;} else if(len1<2){ len1++;len2=len1+1;len3=len2+1;} solve(len1,len2,len3);} void main(){ int i;for(i=0;i<5;i++) a[i]=i+1;printf("所构成组合是:\\n");solve(0,1,2);return ;} ...

排列组合c语言怎么写
c(下面是总数,上面是出现的次数)。如:c(上面是2,下面是3)=(3*2)\/(2*1)=3。上面的数规定几个数相乘,数是从大往小。从n个不同元素中每次取出m个不同元素(0≤m≤n),不管其顺序合成一组,称为从n个元素中不重复地选取m个元素的一个组合。所有这样的组合的总数称为组合数,这个组合...

如何用C语言实现3位数的排列组合?
互不相同且不重复的三位数,即i不等于j且j不等于k且i不等于j,用C语言逻辑表达式描述为:i!=j&&j!=k&&i!=k三个位置,每一个位置有1、2、3、4,四种可选值,因此其排列数为4^3 = 64种排列组合方法,三个位置互不相同,按分步乘法原理得一共有4x3x2 = 24种排列方法。编写示例代码如下:...

求助C语言关于排列组合的程序
combination( i - 1, n - 1);}else{ \/* 满了需要的组合数,输出 *\/ for (j = comb[0]; j > 0; j--){ printf("%c", comb[j]);} printf(" \\n");} } return;} int main(int argc, char *argv[]){ \/\/ 从15个不同的字母中选出7个的C语言程序 comb[0] = 7;printf...

排列组合问题C语言程序有哪些?
C(n,m) 表示 n选m的组合数 等于从n开始连续递减的m个自然数的积除以从1开始连续递增的m个自然数的积 ---例:C(8,3)=8*7*6\/(1*2*3) =56 分子是从8开始连续递减的3个自然数的积 分母是从1开始连续递增的3个自然数的积 C(4,2)=4*3\/(1*2) =6 分子是从4开始连续递减的2个自...

c语言排列组合问题
答案是10,Cₙᵐ=Cₙⁿ⁻ᵐC₅³=5×4×3\/3×2×1=10。以下是排列组合的相关介绍:排列组合是组合学最基本的概念。所谓排列,就是指从给定个数的元素中取出指定个数的元素进行排序。组合则是指从给定个数的元素中仅仅取出指定个数的元素,不...

求一个C语言排列组合的算法
include<stdio.h>#include <stdlib.h>int main(){ int as,sd,df; int a[4]={1,2,3,4}; for(as=0;as<=3;as++) { for(sd=0;sd<=3;sd++) { for(df=0;df<=3;df++) { if(as!=sd&&as!=df&&sd!=df) { printf("%d%d%d\\t",a[as],...

c语言排列组合c语言排列组合
=10 c54=5*4*3*2÷(1*2*3*4)=5 从n个不同元素中,任取m(m≤n,m与n均为自然数,下同)个不同的元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列;从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数。

用c语言怎么实现排列组合啊?比如从100个数里面任意选出5个数,即C100...
include<stdio.h> void main(){ int n = 100;int m = 5;int n1 = 1, m1 = 1;for(int i = 1; i <= m; i++){ n1 *= n - i + 1;m1 *= i;} n1 = n1\/m1;printf("C100 5 = %d\\n",n1);} 从n中选出m个,只要改变n和m的值即可,VS2010下测试通过。

c语言 排列组合
char s[22][3] = {"想","恨","忍","真","我","爱","你","情","没","今","世","一","在","生","活","为","有","乐","好","不","快","过"};unsigned int number = 3,j;int i;_NUM=(unsigned int*)malloc(sizeof(unsigned int)*number);if(!_NUM){puts(...

相似回答