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) 收藏 举报
浙公网安备 33010602011771号