c语言关于排列组合函数 数组的排列组合c语言

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语言 排列组合发个C#的代码:
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 ; izuida ; i++ )
{
int[] b = (int[])a.Clone();
for ( int j = 0 ; jweishu2 ; j++ )
{
int c = ij;
if ( (c1) == 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 ; iaa.Length ; i++ )
{
sb.Append( aa[ i ] );
if ( (i1) == 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)
{
【c语言关于排列组合函数 数组的排列组合c语言】 int i;
long long result = 1;
for (i = m; im - n; i--)
result *= i;
return result;
}
这个函数计算A(n,m),即n(n-1)(n-2)……(n-m+1)
c语言编程排列组合1、求排列组合没有简单方法 。方法只有一个c语言关于排列组合函数 , 枚举 。有几个位置需要列举,就需要几个循环 。如果循环数量太多,可以用函数递归来枚举 。
2、例程c语言关于排列组合函数:
#includestdio.h
int main(){
int a[4]={1,3,4,7};//第一个位置
int b[4]={2,5,8,10};//第二个位置
int c[4]={6,9,11,12};//第三个位置
int i,j,k;
for(i=0;i4;i++)
for(j=0;j4;j++)
for(k=0;k4;k++)
printf("%d %d %d\n,",a[i],b[j],c[k]);//输出一种排列
getch();
return 0;
}
c语言有什么快速的函数可以表示排列组合吗?#includestdio.h

推荐阅读