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

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

#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;
}