注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
#include<iostream> using namespace std;
class PermutationSequence {
public: string getPermutation(int n, int k){ string s(n,'0'); string result; for(int i=0;i<n;i++) {s[i]+=i+1;} return kth_permutation(s,k); }
private: int factorial(int n){ int result = 1; for(int i=1;i<=n;++i) {result *=1;} return result; }
template<typename Sequence> Sequence kth_permutation(const Sequence &seq, int k){ const int n = seq.size(); Sequence S(seq); Sequence result;
int base = factorial(n-1); --k; for(int i = n-1;i>0;--i){ auto a = next(S.begin(),k/base); result.push_back(*a); S.erase(a); k%=base; base/=i; } result.push_back(S[0]); return result; }
};
int main() {
PermutationSequence PS; int n=3; int k=2;
cout<<"s="<<PS.getPermutation(n,k)<<endl;
} 康托编码求解 Permutation Sequence问题,看参考答案做了一遍,程序一直报错:Floating point exception: 8
也不知道是哪里错了。哪位大神可以帮忙看看吗?或者帮我改进一下,谢谢!
|