// 第二题 // 回溯 枚举 void run(long long& res, int curLen, vector<int> curIDs, const int n, vector<bool>& used, int k, const vector<int>& an, const vector<int>& bn){ if(curLen == k) { long long sum = 0; int minV = INT_MAX; for(int i = 0; i < k; ++i){ sum += an[curIDs[i]]; minV = min(minV, bn[curIDs[i]]); } res = res < sum * minV ? sum * minV : res; return; } for(int i = 0; i < n; ++i){ if(used[i] == false){ curIDs.emplace_back(i); used[i] = true; run(res, curLen+1, curIDs, n, used, k, an, bn); used[i] = false; curIDs = vector<int>(curIDs.begin(), curIDs.end()-1); } } }
1 1

相关推荐

04-21 16:05
已编辑
山西大学 Java
不吃压力👿:我和你简历差不多,好多看到28就不回复了,回复的基本是全栈或低代码
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
03-19 10:38
实力求职者:真的绷不住了,第一张霸总人设,第二张求生欲拉满
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务