店长推荐Ⅱ hburst

 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 }

 

店长推荐Ⅱ
Time Limit: 1000 MS Memory Limit: 65536 K
Total Submit: 163(46 users) Total Accepted: 46(37 users) Special Judge: No
Description

想必大家已经领略了店长的调皮,自从店长知道了vagaa之后就一直沉迷期中不能自拔,教主看到后很是伤心,玩物丧志啊!于是教主教店长了一个vagaa的新用法,资源搜索功能。输入一些关键词后可以搜索出相关共享的好资源,店长得知后又是欣喜若狂。同时,教主又发明一个游戏,是上次的升级版,这次给出一些由字母和数字的玩具的同时,关键字不再是vagaa了,需要自己给出.看最后能组成多少个关键字。

Input

每行输入一个字符串由小写字母和数字组成,每个字符代表一个玩具, 紧接着输入一个关键字,同样由字母和数字组组成,字符串长度0<n<=10000,关键字长度0<m<=200

处理到文件结束

Output

输出能够组成关键字的数量

按照样例输出格式输出并换行.

Sample Input

vagaadsfaagav  ga
asgvasdfzxcades  dea

Sample Output

Case 1: 2
Case 2: 1

解析:这个题主要用如下几点.

(1)处理关键字.算出关键字有几个字符组成,每个字符又有多少个相同的。处理之后把关键字中不重复的字符存在另一个数组中,把每个字符相同的个数存在map中。

(2)让新的数组和和字符串一个一个相比较,取相同的个数存在另一个数组中。

(3)num[i]=q[a[i]]/v[a[i]];对num[i]快排,取最小的。

posted @ 2012-09-24 20:41  尔滨之夏  阅读(468)  评论(0编辑  收藏  举报