字符串全排列

发布时间:2019年08月30日 阅读:263 次

 1.PAT 

2. SDUT-OJ http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/4165.html

#include<bits/stdc++.h>
using namespace std;
int num[200],book[200];
int top = 0,n;
void dfs(int step){
    if(step==n+1){
        for(int i=0;i<n;i++){
            cout<<num[i];
        }
        cout<<endl;
        return;
    }
    for(int i=1;i<=n;i++){
        if(!book[i]){
            num[top++] = i;
            book[i] = 1;
            dfs(step+1);
            top--;
            book[i] = 0;
        }

    }
}
void swap(int *p,int *q){
    int t;
    t =*p;
    *p = *q;
    *q = t;
}
void dfs2(int num[],int step){
    if(step==n){
        for(int i=1;i<=n;i++){
            cout<<num[i];
        }
        cout<<endl;
        return;
    }
    for(int i=step;i<=n;i++){
        swap(&num[i],&num[step]);
        dfs2(num,step+1);
        swap(&num[i],&num[step]);
    }
}
int main(){
    //Solution ss;
    //int n;
    cin>>n;
    for(int i=1;i<=n;i++)cin>>num[i];
    dfs2(num,1);
}


Tag:
相关文章

发表评论: