是一个代码补空
题目描述:
数组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) 回帖