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\n",sum); 54 else 55 printf("-1\n"); 56 57 58 return 0; 59 }
时间: 2024-10-12 15:07:28