码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode] Permutation Sequence

时间:2014-08-18 23:29:23      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   strong   for   ar   div   

The set [1,2,3,…,n] contains a total of n! unique permutations.

By listing and labeling all of the permutations in order, We get the following sequence (ie, for n = 3):

  1. "123"
  2. "132"
  3. "213"
  4. "231"
  5. "312"
  6. "321"

 

Given n and k, return the kth permutation sequence.

Note: Given n will be between 1 and 9 inclusive.

class Solution {
public:
    string getPermutation(int n, int k) {
        string res;
        func(res,n,k);
        return res;
    }
private:
    void func(string &res,int n,int k){ //n表示几位数
        if(n==0)
            return;
        int weight = f(n-1);
        char cur = 1;
       
        int num = (k-1)/weight + 1;
        while( find(res.begin(),res.end(),cur)==res.end() || num!=0){
             if(find(res.begin(),res.end(),cur)==res.end())
               num--;
              if( num != 0) 
                cur += 1;
              else
                  break;
        }
         k %= weight;
        if(k==0)
            k = weight; 
        res.push_back(cur);            
        func(res,n-1,k);
    }

    int f(int n){
       
       if(n == 1 || n==0)
           return 1;
       else
          return n*f(n-1);
    
    }
};

 

[LeetCode] Permutation Sequence,布布扣,bubuko.com

[LeetCode] Permutation Sequence

标签:style   blog   color   io   strong   for   ar   div   

原文地址:http://www.cnblogs.com/Xylophone/p/3920657.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!