LeetCode60. 排列序列

class Solution {
public:
    int fac[10];
    void init()
    {
        fac[0]=1;
        fac[1]=1;
        for(int i=2;i<10;i++)
            fac[i]=fac[i-1]*i;
        return;
    }
    string str;
    bool visited[10];
    void dfs(int u,int n,int k)//当前枚举到了第u位
    {
        if(u==n+1)
                return;
        for(int i=1;i<=n;i++)//枚举第u位选什么数字
        {
            if(visited[i])  continue;
            if(k>fac[n-u])
                k-=fac[n-u];
            else
            {
                visited[i]=true;
                str+=to_string(i);
                dfs(u+1,n,k);
                break;
            }
        }
    }
    string getPermutation(int n, int k) {
        init();
        dfs(1,n,k);
        return str;
    }
};
posted @   穿过雾的阴霾  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示