Permutation Sequence

来源:互联网 发布:牛奶倒掉不给穷人知乎 编辑:程序博客网 时间:2024/05/22 06:58

利用康托编码的思路。

class Solution {public:    string getPermutation(int n, int k) {        string s;        string result;        for(int i=0; i<n; i++)            s.push_back(i+1+'0');        k--;        int f = factorial(n);        while(s.size() > 0)        {            f /= n;            int b_idx = k/f;            result.push_back(s[b_idx]);            s.erase(b_idx, 1);            k =  k % f;            n--;        }        return result;    }        int factorial(int n) {        int t = 1;        for(int i=1; i<=n; i++)            t *= i;        return t;    }};

2014.08.23代码


class Solution {public:    string getPermutation(int n, int k) {        string s;        string result;                for(int i=1; i<=n; i++)            s.push_back(i+'0');        k--;                for(int i=1; i<=n; i++)        {            int digit = k/factorial(n-i);            result.push_back(s[digit]);            s.erase(digit, 1);            k = k % factorial(n-i);        }        return result;    }            int factorial(int n)    {        int result = 1;        if(n == 0)  return result;                for(int i=1; i<=n; i++)            result *= i;        return result;    }};


0 0
原创粉丝点击