排列组合cmn的c语言程序怎么写

1.用C语言编写一个排列组合的程序#include <cstdio>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
using namespace std;
int f[4]={0,1,2,3};
char ch[4][10]={"a2b8","5a8f","b9ec","5c2f"};
int main()
{
int i,j,k;
for(i=0;i<24;i++)//共4!个排列
{
for(j=0;j<4;j++)
printf("%s",ch[f[j]]);
printf("\n");
next_permutation(f,f+4);//下一个排列
}
return 0;
}看代码,应该好懂的吧
2.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;}
以上回答你满意么?
3.用C编写程序求排C(m,n)#include <stdio.h>
int main(void)
{
int m,n,R=0;
int cnm(int m,int n);
printf("please input m,n:");
scanf("%d,%d",&m,&n);
R=cnm(m,n);
printf("%d\n",R);
}
int cnm(int m,int n)
{
int z;
if (m==1)
z=n;
else if (m==n)
z=1;
else
z=cnm(m,n-1)+cnm(m-1,n-1);
return(z);
}
4.用c语言编写程序,输出7,8,9三个数字的全部排列组合顺序#include<stdio.h>
#define N 3
void aArrange(int a[],int j,int b)
{
int i,k;
int temp;
for(i=j;i<b;i++)
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
aArrange(a,j+1,b);
if(j==b-1)
{
for(k=0;k<b;k++)
printf("%d",a[k]);
printf("\n");
}
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
main()
{
int a[N]={7,8,9};
aArrange(a,0,N);
}
采用递归的方法,用函数void find(int k)来存放第n个数,再用一个数组int pos[4]来表示每个位置上的数字 。
5.编写一个排列组合程序CTestPermutation::~CTestPermutation(){ cout<<">>>>>>>>>>>>>>>>>>>>>>>>CTestPermutation::~CTestPermutation()"< vecNums,vecPermutated; cout<<"示例数据:"; for(int i = 1; i < 5;i++) { vecNums.push_back(i); cout<6.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';//这个不用说啦 。