解题思路:创建三个数组,一个储存输入的字符串,一个用于输出结果的字符串,一个用于遍历时记录当前字符有没有被使用过,通过递归来遍历生成全排列

注意事项:在遍历完一个位置之后要重新标记为未使用,方便后面继续使用

参考代码:

#include<stdio.h>

#include<string.h>

char str[10];

char res[10];

int used[10]={0};

int len;

 

void fun (int x){

    if(x==len){

        res[x]='\0';

        printf("%s\n",res);

        return;

    }

    for(int i=0;i<len;i++){

        if(!used[i]){

            used[i]=1;

            res[x]=str[i];

            fun(x+1);

            used[i]=0;

             

        }

    }

}

int main()

{

    scanf("%s",str);

    len=strlen(str);

    fun(0);

    return 0;

}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论