1 #include<stdio.h> 2 #include<map>//利用map函数。 3 #include<string> 4 #include<stdlib.h>//快排头文件。 5 #define MAX 10100 6 using namespace std; 7 int cmp(const void*p1,const void*p2) 8 { 9 return *(int*)p1>*(int*)p2; 10 } 11 int main() 12 { 13 map<char,int>v;//存相同字符的个数 14 map<char,int>q;//存与字符串中字符相同的个数 15 int num[210],n,n2; 16 char s[MAX],s2[210]; 17 char a[210]; 18 int m=0,k; 19 int i,j; 20 while(scanf("%s%s",s,s2)!=EOF) 21 { 22 m++;k=0; 23 v.clear();q.clear(); 24 memset(num,0,sizeof(num)); 25 n=strlen(s);n2=strlen(s2); 26 for(i=0;i<n2;i++)//对s2处理 27 { 28 if(!v[s2[i]]) 29 {v[s2[i]]++;a[k++]=s2[i];} 30 else if(v[s2[i]]) 31 v[s2[i]]++; 32 } 33 for(i=0;i<k;i++)//整个比较 34 { 35 for(j=0;j<n;j++) 36 if(a[i]==s[j]) 37 { 38 q[a[i]]++; 39 } 40 } 41 for(i=0;i<k;i++) 42 num[i]=q[a[i]]/v[a[i]]; 43 qsort(num,k,sizeof(num[0]),cmp); 44 printf("Case %d: %d\n",m,num[0]); 45 } 46 return 0; 47 }
店长推荐Ⅱ | |||||
| |||||
Description | |||||
想必大家已经领略了店长的调皮,自从店长知道了vagaa之后就一直沉迷期中不能自拔,教主看到后很是伤心,玩物丧志啊!于是教主教店长了一个vagaa的新用法,资源搜索功能。输入一些关键词后可以搜索出相关共享的好资源,店长得知后又是欣喜若狂。同时,教主又发明一个游戏,是上次的升级版,这次给出一些由字母和数字的玩具的同时,关键字不再是vagaa了,需要自己给出.看最后能组成多少个关键字。 | |||||
Input | |||||
每行输入一个字符串由小写字母和数字组成,每个字符代表一个玩具, 紧接着输入一个关键字,同样由字母和数字组组成,字符串长度0<n<=10000,关键字长度0<m<=200 处理到文件结束 | |||||
Output | |||||
输出能够组成关键字的数量 按照样例输出格式输出并换行. | |||||
Sample Input | |||||
vagaadsfaagav ga | |||||
Sample Output | |||||
Case 1: 2 |
解析:这个题主要用如下几点.
(1)处理关键字.算出关键字有几个字符组成,每个字符又有多少个相同的。处理之后把关键字中不重复的字符存在另一个数组中,把每个字符相同的个数存在map中。
(2)让新的数组和和字符串一个一个相比较,取相同的个数存在另一个数组中。
(3)num[i]=q[a[i]]/v[a[i]];对num[i]快排,取最小的。