首页 > 招商2021.9.16 c++第二题
头像
怕上火爆曾老菊
发布于 2021-09-16 21:54
+ 关注

招商2021.9.16 c++第二题

2021.9.16招商银行c++第二题使用最小任务数覆盖所有app的题有人有想法吗?
是一个代码补空
题目描述:
数组req_apps:[app1,app2,app3,app4]为要求上线的apps
数组tasks为一个二维数组,tasks:[task1,task2,task3]
其中task1:[app1,app2]、task2:[app3,app4],task3:[app2,app3]
最少能覆盖所有req_apps中的任务数为2


代码:
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int smallestTaskSet(vector<string> req_apps,vector<vector<string>> tasks)
{
    //task_name_index装的是(app_i,i)
    map<string,int> task_name_index;
    int appsize=req_apps.size();
    for(int i=0;i<appsize;++i)
    {
        task_name_index[req_apps[i]]=i;
    }
    vector<int> dp(1<<appsize,-1);
    dp[0]=?;
    for(int i=0;i<tasks.size();i++)
    {
        int current_task=0;
        for(int j=0;j<tasks[i].size();j++)
        {
            int x=task_name_index[tasks[i][j]];
            current_task?(1<<x);
        }
        for(int j=0;j<(1<<appsize);j++)
        {
            if(?)//当前集合计算过
            {
                int x=current_task|j;//更新的集合
                if(dp[x]==-1||dp[x]>dp[j]+1)//集合没计算或者选最优
                {
                    dp[x]=?;
                }
            }
        }
    }
    return dp[1<<appsize-1];
}
int main()
{
    return 0;
}




有人能解释一下这个啥意思么,看不懂,太菜了

全部评论

(0) 回帖
加载中...
话题 回帖