c语言作业,输出四个数A,B,C,D的全排列
答案:4 悬赏:70 手机版
解决时间 2021-03-21 14:24
- 提问者网友:我的未来我做主
- 2021-03-20 21:59
c语言作业,输出四个数A,B,C,D的全排列
最佳答案
- 五星知识达人网友:低血压的长颈鹿
- 2021-03-20 22:49
#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;
}可以借助于stl模板中的next_permutation函数,这个函数是按照字典序不停的取该序列的下一个序列,直到结束。然后输出的时候讲数字转化为你要的字母即可。
例如 第一个序列是1,2,3,4,--》A,B,C,D
#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楼网友:怙棘
- 2021-03-21 00:24
只要结果生成的话,用木头字典工具集里的排列字典生成
- 2楼网友:底特律间谍
- 2021-03-21 00:10
c:
#include <stdio.h>
#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;
}
- 3楼网友:慢性怪人
- 2021-03-20 22:54
字符数组,循环输出
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯