leetcode60. 排列序列

分析

设置当前是第几个,如果到达第k个则结束循环。

class Solution {
public:
    int path[10];
    bool st[10];
    string s=""; 
    int cur=0;  
    void dfs(int n,int u,int k){
        if(n==u){
            if(++cur==k){
                for(int i=0;i<n;i++)
                    s+=path[i]+'0';
                    return ;
            }
            return ;
        }
        for(int i=1;i<=n;i++){
            if(!st[i]){
                st[i]=true;
                path[u]=i;
                dfs(n,u+1,k);
                st[i]=false;
            }
        }
    }
    string getPermutation(int n, int k) {
            dfs(n,0,k);
            return s;
    }
};