LeetCode 1125 最小的必要团队

给定一个技能数组,再给定一些人和他们拥有的技能,求最少多少个人拥有的技能可以覆盖给定的所有技能。这道题比较容易想到用dp做,看到了技能最多只有16个,可以尝试用数位dp来做。把每个人拥有的技能转换成对应的数字,我这里是把一个人的技能直接合起来变成一个数字,可以加快运算,然后去求每个状态需要的最少人数,并且记录下这个状态是由哪一个状态加上哪一个人得来的,最后就像寻找路径一样即可求出需要的人的编号。

class Solution {
public:
    vector smallestSufficientTeam(vector& req_skills, vector>& people) {
        int sz=req_skills.size();
        vector peoples;
        map mp;
        vector ans;
        int dp[1<dp[i]+1)
                {
                    dp[tmp]=dp[i]+1;
                    pre[tmp]=i;
                    val[tmp]=j;
                }
            }
        }
        for(int i=(1<

你可能感兴趣的:(LeetCode 1125 最小的必要团队)