题目大意:给出一个堆积木的前视图和左视图,问最少需要多少个积木才能完成
解题思路:贪心找到最多的匹配,没有匹配到的只能再另加上去了
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#define maxn 15
int 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;
}