CF328B Sheldon and Ice Pieces

题意:给定一个数字序列,问后面的数字元素能够组成最多的组数。

分析:把2和5,6和9看作是一个元素,然后求出一个最小的组数就可以了。

#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <cctype>
#include <algorithm>
using namespace std;

char obj[10000];
char str[10000];

int digit[15], rec[15];

inline int get(char ch) {
    if (ch == '5') return 2;
    else if (ch == '9') return 6;
    else return ch - '0';
}

int main() {
    while (scanf("%s %s", obj, str) != EOF) {
        memset(digit, 0, sizeof (digit));
        memset(rec, 0, sizeof (rec));
        int len1 = strlen(obj), len2 = strlen(str);
        for (int i = 0; i < len1; ++i) {
            digit[get(obj[i])]++;
        }
        for (int i = 0; i < len2; ++i) {
            rec[get(str[i])]++;
        }
        int Min = 10000000;
        for (int i = 0; i < 10; ++i) {
            if (digit[i] > 0) {
                Min = min(Min, rec[i] / digit[i]);
            }
        }
        printf("%d\n", Min);
    }
    return 0;
}
View Code

相关文章: