permutation sequence

 1 class Solution {
 2 public:
 3   string getPermutation(int n, int k) {
 4         // Start typing your C/C++ solution below
 5         // DO NOT write int main() function
 6         if( k <= 0 ) return "";
 7         
 8         vector<int> flag(n, 0 );
 9         for( int i=0;i<n;i++ )  flag[i] = i+1;
10         int N = 1;
11         
12         for(int i=n;i>=1;i--)
13             N *= i;
14         if( k > N )  k = k % N;
15       
16         N /= n;
17         string s = "";
18         int t;
19         while(  k > 0 )
20         {
21             t = ceil( (float)k / N ) - 1 ;
22             s += (char)('0' + flag[t] );
23             flag.erase( flag.begin() + t, flag.begin() + t + 1 );
24             if( flag.empty() )    return s;
25             k = k - t* N;  
26             N /= flag.size();
27         }
28 
29         
30         return s;
31     }
32 };

 

 

posted on 2013-09-03 21:45  jumping_grass  阅读(211)  评论(0)    收藏  举报

导航