c语言作业,输出四个数A,B,C,D的全排列

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;
}

可以借助于stl模板中的next_permutation函数,这个函数是按照字典序不停的取该序列的下一个序列,直到结束。然后输出的时候讲数字转化为你要的字母即可。

例如 第一个序列是1,2,3,4,--》A,B,C,D

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-11-17

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;
}

第2个回答  2017-11-17
只要结果生成的话,用木头字典工具集里的排列字典生成
第3个回答  2017-11-17
字符数组,循环输出

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网