思路比较容易想到,因为口罩全部只有15批,因此直接暴力dfs搜索即可
//dfs #include<bits/stdc++.h> using namespace std; int ans = 9999; int num[] = {9090400, 8499400, 5926800, 8547000, 4958200, 4422600, 5751200, 4175600, 6309600, 5865200, 6604400, 4635000, 10663400, 8087200, 4554000}; void dfs(int n,int s1,int s2){ if(n==15){ ans = min(ans,abs(s1-s2)); return ; } dfs(n+1,s1+num[n],s2);//分配给第一家医院 dfs(n+1,s1,s2+num[n]);//分配给第二家医院 } int main(){ dfs(0,0,0); cout<<ans<<endl; return 0; }
[蓝桥杯 2020 省 A1] 分配口罩
最新推荐文章于 2024-10-31 21:00:35 发布
该程序通过深度优先搜索(DFS)策略解决了一个口罩分配问题,目标是最小化两家医院获得口罩数量的差值。初始化一个全局最小差值变量为9999,然后遍历口罩数组,分别尝试将口罩分配给两家医院并递归进行搜索。最终输出两家医院口罩数量差值的最小值。
摘要由CSDN通过智能技术生成