#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;
}看代码,应该好懂的吧
这个不过繁了些,不难。有具体疑问再问吧,tao_qiufeng@126com,有问题发邮件吧,我想主要利用if、while语句,如果你是初学,估计数组是你的难点,特别是动态的多维的数组。
#include<stdioh>
#include<stringh>
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(n>0)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=#//计数器
地址。
p[n]='\0';//这个不用说啦。 Show(
n,len
,str,
p
,i);
printf("\n%d
位密码,每个密码有%d个选择的话,共有:%d个组合。\n",n,len,i); return
0;
}
以上就是关于用C语言编写一个排列组合的程序全部的内容,包括:用C语言编写一个排列组合的程序、C语言 排列组合程序、c语言 排列组合 程序算法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)