我来发个简洁一点的吧【不正经题解】
2024-08-13 21:47:09
发布于:浙江
8阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
char c[7],a[7]; //输入和输出数组
bool vis[27]; //判断是否被使用
int len; //长度
void dfs(int cnt){
if(cnt>len){
for(int i=1;i<=len;i++){
cout<<a[i];//输出
}
cout<<endl;
return ;
}
for(int i=0;i<len;i++){ //由于是scanf直接输入,i从0开始
if(!vis[c[i]-97]){ //判断是否使用
vis[c[i]-97]=1; //变为使用
a[cnt]=c[i]; //给a[cnt]赋值
dfs(cnt+1); //往cnt+1的地方推进一次,再做循环
vis[c[i]-97]=0; //回溯,变为未使用
}
}
}
int main() {
scanf("%s",c); //scanf直接输入
len=strlen(c); //长度
dfs(1); //开始时cnt=1
return 0;
}
这里空空如也
有帮助,赞一个