数论之全排列问题
一、列出全排列
1. 从1到n的全排列
2. 字符的全排列
2.1 题目描述
给定一个字符串,列出所有的字符的全排列
链接
2.2 题目思路
可以对字符串做映射,但是其实每个字符都在字符串对应了一个位置(字符串的下标),因此,求下标的全排列,即可以求出字符的全排列。
2.3 代码实现
#include<stdio.h>
#include<string.h>
char s[7];
int path[7];
int st[7];
int n;
void dfs(u){
if(u == n){
for(int i = 0; i < n; i++){
printf("%c",s[path[i]]);
}
printf("\n");
return;
}
for(int i = 0; i < n; i++){
if(!st[i]){
path[u] = i;
st[i] = 1;
dfs(u+1);
st[i] = 0;
}
}
}
int main(){
scanf("%s",s);
n = strlen(s);
memset(st, 0, sizeof(st));
dfs(0);
return 0;
}