问题 A: Talkweb
[提交][状态][讨论版]
题目描述
众所周知,拓维信息系统股份有限公司(Talkweb)赞助了2016年度湖南科技大学大学生计算机程序设计竞赛。宣传部的小明同学负责校赛的宣传,要用到广告字母牌。
好消息是宣传部已经有一些现成的字母牌了,坏消息是所有的字母牌都堆在一起,小明不知道能够拼成多少个Talkweb?要求区分大小写,每个牌子只能用一次。
示例字符串中的每一个字符表示一个字母广告牌,
字符串“wbeabTalk”,能够拼出 1个Talkweb。
字符串“abtalkweb”,能够拼出 0个Talkweb。
输入
一个仅由52个英文字母组成的字符串,长度不超过1000。
输出
仅输出一个整数,即能够拼出Talkweb的数目。
样例输入
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
样例输出
2
提示
大水题,今天特地把这比赛代码补上,一查这题当时居然用map,这题居然就搬出map,当时真是脑抽风了.下面给的是比赛时的代码
#include <iostream>
#include <cstdio>
#include <map>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
char A[1020];
int Handle(int len)
{
int MAX = 0;
map<char,int> MAP;
map<char,int>::iterator it;
for(int i=0;i<len;i++)
{
it=MAP.find(A[i]);
if(it==MAP.end()) MAP[A[i]]=1;
else (*it).second++;
}
it = MAP.find('T'); MAX = (*it).second;
it = MAP.find('a'); MAX = min((*it).second,MAX);
it = MAP.find('l'); MAX = min((*it).second,MAX);
it = MAP.find('k'); MAX = min((*it).second,MAX);
it = MAP.find('w'); MAX = min((*it).second,MAX);
it = MAP.find('e'); MAX = min((*it).second,MAX);
it = MAP.find('b'); MAX = min((*it).second,MAX);
return MAX;
}
int main()
{
// freopen("D:\\test.txt","r",stdin);
gets(A);
printf("%d\n",Handle(strlen(A)));
return 0;
}