当前位置: 代码迷 >> 综合 >> Leetcode 1125. 最小的必要团队 (DAY 68) ---- 动态规划学习期(终于自己做出来一道题了 但是时空复杂度太高)
  详细解决方案

Leetcode 1125. 最小的必要团队 (DAY 68) ---- 动态规划学习期(终于自己做出来一道题了 但是时空复杂度太高)

热度:50   发布时间:2023-11-17 19:13:13.0

原题题目

在这里插入图片描述


代码实现(首刷自解 时空复杂度很高)

class Solution {
    
public:vector<int> smallestSufficientTeam(vector<string>& req_skills, vector<vector<string>>& people) {
    int strl = req_skills.size(),num_people = people.size(),temp;vector<vector<int>> dp(1<<strl);vector<int>::iterator p;for(int i=0;i<1<<strl;i++){
    if(dp[i].empty() && i)continue;for(int k=0;k<num_people;k++){
    p = find(dp[i].begin(),dp[i].end(),k);if(p != dp[i].end())    continue;temp = i;for(string s1:people[k]){
    for(int j=0;j<strl;j++){
    if(req_skills[j] == s1){
    temp |= (1<<j);if(dp[temp].empty() || dp[temp].size() > dp[i].size()+1){
    dp[temp] = dp[i];dp[temp].push_back(k);}}}}}}return dp[(1<<strl)-1];}
};