C语言函数排列组合,c实现排列组合

C语言 排列组合

发个C#的代码:

我们提供的服务有:成都网站建设、成都做网站、微信公众号开发、网站优化、网站认证、周至ssl等。为近1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的周至网站制作公司

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

int weishu = 6;

int weishu2 = weishu - 1;

int zuida = (int)Math.Pow( 2 , weishu2 );

Listint[] list = new Listint[]();

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语言排列组合中的排列用函数怎么写

long long permutation(int m, int n)

{

int i;

long long result = 1;

for (i = m; i  m - n; i--)

result *= i;

return result;

}

这个函数计算A(n,m),即n(n-1)(n-2)……(n-m+1)

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

#includestdio.h

int com(int m,int n)//m中取n个

{

int i,j,sum=1;

for (i=m,j=0;jn;j++,i--)

{

sum=sum*i/(j+1);

}

return sum;

}

int main()

{

int i;

i=com(5,3);

printf("%d",i);

return 0;

}

c语言 排列组合 程序算法

#includestdio.h

#includestring.h

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';//这个不用说啦。 Show(

n,len

,str,

p

,i);

printf("\n%d

位密码,每个密码有%d个选择的话,共有:%d个组合。\n",n,len,*i); return

0;

}

C语言中的排列组合问题;

f(m, n)表示m个黑球n个白球的排法,那好。

假如这个问题给你了,你会这样想:

1、我先把第一位放黑球,那么后面的排法有多少种:当然是f(m - 1, n)种,因为少了一个黑球。

2、同理,我先放白球,那么有f(m, n - 1)种。

总共就有f(m-1,n)+f(m,n-1)种,后面就递归了。但不能无限递归,需要指定界限,然后就有if(m==0||n==0) return 1;

这个和数学归纳法很相似。


文章名称:C语言函数排列组合,c实现排列组合
本文链接:http://bzwzjz.com/article/hsoeph.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都企业网站建设 成都网站建设 成都网站制作 响应式网站设计 网站建设改版 app网站建设 定制网站制作 网站制作 高端网站设计 成都网站建设 手机网站制作 成都网站建设 手机网站建设 成都网站建设公司 成都网站建设 手机网站制作 成都企业网站制作 公司网站建设 成都网站制作 营销型网站建设 成都网站设计 高端网站设计推广