UVALive - 4636 Cubist Artwork 贪心

来源:互联网 发布:4399创世兵魂刷枪软件 编辑:程序博客网 时间:2024/06/07 13:40

题目大意:给出一个堆积木的前视图和左视图,问最少需要多少个积木才能完成

解题思路:贪心找到最多的匹配,没有匹配到的只能再另加上去了

#include<cstdio>#include<algorithm>#include<cstring>using namespace std;#define maxn 15int vis[maxn], num1[maxn], num2[maxn];int main() {int w, d;while(scanf("%d%d",&w, &d) == 2 && w + d) {bool flag = false;if(w < d) {swap(w,d);flag = true;}int sum = 0;if(flag) {for(int i = 0; i < d; i++)scanf("%d", &num2[i]);for(int i = 0; i < w; i++) {scanf("%d", &num1[i]);sum += num1[i];}}else{for(int i = 0; i < w; i++) {scanf("%d", &num1[i]);sum += num1[i];}for(int j = 0; j < d; j++)scanf("%d", &num2[j]);}memset(vis,0,sizeof(vis));int j;for(int i = 0; i < d; i++) { for(j = 0; j < w; j++) if(!vis[j] && num2[i] == num1[j]) {vis[j] = 1;break;}if(j == w)sum += num2[i];}printf("%d\n",sum);}return 0;}



0 0
原创粉丝点击