leetcode.5387. n个匹配方案数(状压dp)

5387. 每个人戴不同帽子的方案数


图片说明


表示前个帽子状态为的合法方案数,表示里这些人是否戴了帽子的集合。
那么对于第个帽子,要么只有一个人戴,要么没有人戴。

所以对于合法的第个人戴这个帽子或者没有人戴。

没有人戴这个帽子。

合法的第个人戴这个帽子。

复杂度

class Solution {
public:
    int g[43][11];
    int dp[42][1025]={0};
    const int mod=1e9+7;
    int numberWays(vector<vector<int>>& hat) {
        int n=hat.size();
        for(int i=0;i<n;i++){
            for(int j:hat[i])
            g[j][i]=1;
        }
        dp[0][0]=1;
        for(int i=1;i<=40;i++){
            for(int j=-1;j<n;j++){
                for(int k=0;k<(1<<n);k++){
                    if(j==-1)dp[i][0|k]=dp[i-1][k];
                    else{
                        if(g[i][j]&&!(1<<j&k)){
                            dp[i][1<<j|k]+=dp[i-1][k];
                            dp[i][1<<j|k]%=mod;
                        }
                    }
                }
            }
        }
        return dp[40][(1<<n)-1];
    }
};
全部评论

相关推荐

12-22 16:31
已编辑
桂林电子科技大学 Python
很奥的前端仔:如果你接了offer 临时又说不去 hr确实要多做一些工作。 当然如果是接offer之前当我没说
点赞 评论 收藏
分享
11-13 14:37
门头沟学院 Java
程序员牛肉:是的,我觉得你最先需要的是多接触计算机圈子。我感觉你这个写的太幼稚了,根本没换位思考面试官。 你对实习的描述还是我写了前后端,我写了Restful接口,我用了EChatrs。你这让面试官怎么问你?问你什么是前后端?问你什么是Restful?讲真的兄弟,你这个简历在面试官眼里就是啥也不懂的好学生。所以一定要尽快加入一个圈子跟大家多聊聊,看看正儿八经的简历是怎么写的。 可以看一下我首页的简历怎么写那篇文章来学一下,你这里面的坑点我那篇文章里面都有讲过。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务