您的位置:首页 > 产品设计 > UI/UE

60. Permutation Sequence

2016-03-26 14:08 447 查看
//开始还考虑当这个n特别大,导致n!>int_max,然而k<int_max怎么办,后来发现题设没考虑这些边界条件,那就无所谓啦,直接解出来
class Solution {
public:
void get_kth(string &s,int factorial,int k,bool * flag,int n)
{
if(n==s.size())  return;
int m=(k-1)/factorial+1;
k-=(m-1)*factorial;
for(int i=0;i<m;i++)
{
if(flag[i]) m++;
}
flag[m-1]=true;
s.push_back(m+'0');
if(n!=s.size()) factorial/=(n-s.size());
get_kth(s,factorial,k,flag,n);
}
string getPermutation(int n, int k) {
int factorial=1;
for(int i=1;i<n;i++) factorial*=i;//(n-1)!
string s;
bool * flag=new bool
;
memset(flag,false,sizeof(bool)*n);
get_kth(s,factorial,k,flag,n);
return s;

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: