题解 | 全排列

#include <bits/stdc++.h>
using namespace std;

void fullsort(string pre,string s){
    if(s.size()==1){
        cout<<pre+s<<endl;
        return;
    }
    for(int i=0;i<s.size();i++){
        string nextPre=pre+s[i];
        string x=s;
        x.erase(i,1);
        fullsort(nextPre, x);
    }
}

int main(){
    string s;
    while(cin>>s){
        fullsort("", s);
    }
}

递归的思想就是调用了作用相同的函数,我们的核心是找到这个函数做了什么操作,对于求全排列的问题,那么对于前面的全排列,就是前面的已排状态与后面所有的全排列的组合,对于这个过程,每个头部字段,在每次进行的时候都会增加一个内容,然后对剩下的进行同样的操作,最后直到长度为1,得出唯一情况,结束。

全部评论

相关推荐

不愿透露姓名的神秘牛友
2024-12-31 14:32
数字马力 Java 10k*(12-16) 本科其他
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务