UVA - 1445 Cubist Artwork

题目大意:给出一个不规则图形的正视图和左视图,问说最少使用多少个小立方体。

解题思路:很容易想到,如果正视图和左视图有一列刚好高度相等,则可省去一列。

#include <cstdio>
#include <algorithm>
using namespace std;

int main() {
    int w, d;
    while (scanf("%d%d", &w, &d) && w + d) {
        int h, F[25] = {0}, S[25] = {0};
        for (int i = 0; i < w; i++) {
            scanf("%d", &h);
            F[h]++;
        }
        for (int i = 0; i < d; i++) {
            scanf("%d", &h);
            S[h]++;
        }

        int ans = 0;
        for (int i = 1; i <= 20; i++)
            ans += max(F[i], S[i]) * i;

        printf("%d\n", ans);
    }
    return 0;
}

你可能感兴趣的:(UVA - 1445 Cubist Artwork)