小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子;如果不是,那么告诉她缺了多少珠子。
为方便起见,我们用[0-9]、[a-z]、[A-Z]范围内的字符来表示颜色。例如在图1中,第3串是小红想做的珠串;那么第1串可以买,因为包含了全部她想要的珠子,还多了8颗不需要的珠子;第2串不能买,因为没有黑色珠子,并且少了一颗红色的珠子。
输入格式:
每个输入包含1个测试用例。每个测试用例分别在2行中先后给出摊主的珠串和小红想做的珠串,两串都不超过1000个珠子。
输出格式:
如果可以买,则在一行中输出“Yes”以及有多少多余的珠子;如果不可以买,则在一行中输出“No”以及缺了多少珠子。其间以1个空格分隔。
输入样例1:
1 2 |
ppRYYGrrYBR2258 YrR8RrY |
输出样例1:
1 |
Yes 8 |
输入样例2:
1 2 |
ppRYYGrrYB225 YrR8RrY |
输出样例2:
1 |
No 2 |
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
/*LLonely *PAT Basic Level No.1039 *Duration: 1ms *Memory: 256kB */ #include<stdio.h> int main(void) { int count_sold[128],count_wanted[128],i,more=0,less=0; char c; for(i=0;i<128;i++) { count_sold[i]=0; count_wanted[i]=0; } while((c=getchar())!='\n') { count_sold[c]++; } while((c=getchar())!='\n') { count_wanted[c]++; } for(i=0;i<128;i++) { if(count_sold[i]>count_wanted[i]) { more+=(count_sold[i]-count_wanted[i]); } else if(count_sold[i]<count_wanted[i])><p> 搜索版</p> <pre lang="c">#include<stdio.h> #include<string.h> int main(void) { char beads_sold[1001],beads_wanted[1001],*p; int more=0,less=0,i; scanf("%s",beads_sold); scanf("%s",beads_wanted); for(i=0;i<strlen(beads_wanted);i++) { if((p=strchr(beads_sold,beads_wanted[i]))!=NULL) { *p=1; beads_wanted[i]=1; } } for(i=0;i<strlen(beads_wanted);i++) { if(beads_wanted[i]!=1) { less++; } } if(less!=0) { printf("No %d\n",less); } else { for(i=0;i<strlen(beads_sold);i++) { if(beads_sold[i]!=1) { more++; } } printf("Yes %d\n",more); } return 0; } |