Problem Link
1 /*
2 题目大意:
3 第一行输入纸张的类型和张数,第二行输入纸张类型
4 求可能拼出的最大面积;如果第二行中有第一行所不具备的纸张类型,则输出-1
5 思路 : 我用了两个长度为 25 的 int 型数组来记录输入的字母的个数,然后逐一比较即可;
6 */
7 #include <iostream>
8 #include<string.h>
9 #include<cstdio>
10 using namespace std;
11
12 int main()
13 {
14 int i,j;
15 int a[26] = {0};
16 int b[26] = {0};
17 char s1[1001],s2[1001];
18 int flag = 1;
19 int sum = 0;
20
21 scanf("%s",s1);
22 scanf("%s",s2);
23 int len1 = strlen(s1);
24 int len2 = strlen(s2);
25
26 for(i = 0;i<=len1-1;i++)
27 {
28 j = s1[i] - 'a';
29 a[j]++;
30 }
31 for(i = 0;i<=len2-1;i++)
32 {
33 j = s2[i] - 'a';
34 b[j]++;
35 }
36
37 for(i=0;i<=25;i++)
38 {
39
40
41 if(a[i]==0&&b[i]!=0)
42 {
43 flag = 0;
44 break;
45 }
46
47 if(a[i]>=b[i])
48 sum += b[i];
49 else
50 sum +=a[i];
51 }
52 if(flag)
53 printf("%d
",sum);
54 else
55 printf("-1
");
56
57
58 return 0;
59 }