当前位置:首页 » 编程语言 » c语言排列组合

c语言排列组合

发布时间: 2022-01-23 06:08:43

‘壹’ 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语言编写一个排列组合的程序

三个for循环就可以搞定,我电脑马上没有电了,现在来不及给你写出完成程序,明天起床还没有人回答你我再给你写出来

‘叁’ C语言矩阵的排列组合

#include<stdio.h>
intmain()
{
intm,i,j,n;
scanf("%d",&m);
for(i=1;i<=10000;i++)
{
n=m;
for(j=i-1;j>=1;j--)//因子之和
{
if(i%j==0)
n=n-j;
}
if(n==0)printf("%d ",i);
}

system("pause");
return0;
}

‘肆’ 用c语言怎么实现排列组合啊比如从100个数里面任意选出5个数,即C100 5……

#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语言 排列组合

发个C#的代码:

int[] a = { 1 , 2 , 3 , 4 , 5 , 6 };
int weishu = 6;

int weishu2 = weishu - 1;
int zuida = (int)Math.Pow( 2 , weishu2 );
List<int[]> list = new List<int[]>();
for ( int i = 0 ; i < zuida ; i++ )
{
int[] b = (int[])a.Clone();
for ( int j = 0 ; j < weishu2 ; j++ )
{
int c = i >> j;
if ( (c & 1) == 1 )
{
int tmp = b[ j ];
b[ j ] = b[ j + 1 ];
b[ j + 1 ] = tmp;
}
}
list.Add( b );
}

System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.AppendLine( string.Format( "共 {0} 个结果" , list.Count ) );
foreach ( int[] aa in list )
{
for ( int i = 0 ; i < aa.Length ; i++ )
{
sb.Append( aa[ i ] );
if ( (i & 1) == 1 )
sb.Append( '\t' );
}
sb.AppendLine();
}
Console.WriteLine( sb.ToString() );

运行结果:

共 32 个结果
12 34 56
21 34 56
13 24 56
23 14 56
12 43 56
21 43 56
13 42 56
23 41 56
12 35 46
21 35 46
13 25 46
23 15 46
12 45 36
21 45 36
13 45 26
23 45 16
12 34 65
21 34 65
13 24 65
23 14 65
12 43 65
21 43 65
13 42 65
23 41 65
12 35 64
21 35 64
13 25 64
23 15 64
12 45 63
21 45 63
13 45 62
23 45 61

‘陆’ C语言 排列组合程序

shi 是用C来编程吗

‘柒’ C语言如何实现任意数排列组合,新手求助,急

  1. 求排列组合没有简单方法。方法只有一个,枚举。

  2. 有几个位置需要列举,就需要几个循环。如果循环数量太多,可以用函数递归来枚举。

    例程:

    #include<stdio.h>
    intmain(){
    inta[4]={1,3,4,7};//第一个位置
    intb[4]={2,5,8,10};//第二个位置
    intc[4]={6,9,11,12};//第三个位置
    inti,j,k;
    for(i=0;i<4;i++)
    for(j=0;j<4;j++)
    for(k=0;k<4;k++)
    printf("%d%d%d ,",a[i],b[j],c[k]);//输出一种排列
    getch();
    return0;
    }

‘捌’ c语言有什么快速的函数可以表示排列组合吗

#include<stdio.h>
intcom(intm,intn)//m中取n个
{
inti,j,sum=1;
for(i=m,j=0;j<n;j++,i--)
{
sum=sum*i/(j+1);
}
returnsum;
}
intmain()
{
inti;
i=com(5,3);
printf("%d",i);
return0;
}

‘玖’ C语言:循环结构(排列组合)

#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
for (int i=n;i<=n+3;i++)
{
for (int j=n;j<=n+3;j++)
{
if(i==j) continue;
for (int k=n;k<=n+3;k++)
{
if(i==k||j==k) continue;
printf("%d%d%d ",i,j,k);
}
}
}
printf("\n");
return 0;
}

‘拾’ C语言的一个排列组合问题

#include<stdio.h>
void main()
{
int a=1,b=2,c=3,d=4,e=5;
int i,j,k,l,sum=15,n=0;

for(i=2;i<6;i++)
for(j=1;j<6;j++)
if(j!=2)
for(k=1;j<6;j++)
if(j!=3)
for(l=1;l<6;l++)
if(i!=j&&i!=k&&i!=l&&i!=(sum-i-j-k-l))
if(j!=k&&j!=l&&j!=(sum-i-j-k-l))
if(k!=l&&k!=(sum-i-j-k-l)&&l!=(sum-i-j-k-l))
{
printf("甲%d\t乙%d\t丙%d\t丁%d\t戊%d\n\n",i,j,k,l,sum-i-j-k-l);
n++;}
printf("有%d中排列组合名,详见如上图:\n",n);

}
貌似我的最清新明了 2楼的出现的是一串数字,一行

热点内容
python中文发音 发布:2025-03-17 17:32:00 浏览:9
c语言程序编译运行慢 发布:2025-03-17 17:29:44 浏览:307
苹果手机锁屏密码怎么取消 发布:2025-03-17 17:29:44 浏览:665
解析语言和编译语言 发布:2025-03-17 17:29:07 浏览:796
什么台球游戏安卓和ios能一起玩 发布:2025-03-17 17:29:06 浏览:769
天阔服务器默认管理地址 发布:2025-03-17 17:23:46 浏览:447
安卓手机大图怎么浏览 发布:2025-03-17 17:09:11 浏览:983
电脑打开网页服务器没有响应 发布:2025-03-17 17:09:11 浏览:193
手柄编程 发布:2025-03-17 17:06:07 浏览:192
iphone重启缓存 发布:2025-03-17 16:57:56 浏览:634