c语言作业,输出四个数A,B,C,D的全排列
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
int main()
{
int num[4]={1,2,3,4};
do
{
printf("%c,%c,%c,%c\n",num[0]+'A'-1,num[1]+'A'-1,num[2]+'A'-1,num[3]+'A'-1);
}while(next_permutation(num,num+4));
return 0;
}
#include <stdio.h>
#include <algorithm>
using namespace std;
int main()
{
int num[4]={1,2,3,4};
do
{
printf("%c,%c,%c,%c\n",num[0]+'A'-1,num[1]+'A'-1,num[2]+'A'-1,num[3]+'A'-1);
}while(next_permutation(num,num+4));
return 0;
}
可以借助于stl模板中的next_permutation函数,这个函数是按照字典序不停的取该序列的下一个序列,直到结束。然后输出的时候讲数字转化为你要的字母即可。
例如 第一个序列是1,2,3,4,--》A,B,C,D
温馨提示:答案为网友推荐,仅供参考
第1个回答 2017-11-17
c:
#include <stdlib.h>
char letters[]={"ABCDEFGHIJKLMOPQRSTUVWXYZ"};
void pai(int*stack,int n,int i){
if(i==n){
for(int j=0;j<i;j++){
printf("%c",letters[stack[j]]);
}
printf("\n");
}else{
int t;
for(int j=0;j<n;j++){
t=1;
for(int k=0;k<i;k++){
if(stack[k]==j){
t=0;
break;
}
}
if(t){
stack[i]=j;
pai(stack,n,i+1);
}
}
}
}
int main(void){
int n;
scanf("%d",&n);
pai((int*)malloc(sizeof(int)*n),n,0);
return 0;
}
第2个回答 2017-11-17
只要结果生成的话,用木头字典工具集里的排列字典生成
第3个回答 2017-11-17
字符数组,循环输出