题意:给你一行字符串,让你找其中蕴含的“good morning"的次数。
析:看起来很水么,多简单,只有统计一下其中字母的出现的次数,然后除以相应的个数。
但是很不幸的是WA,而且是在test1,说明你样例都没过应该。这就是题的坑。
1.坑是这个空格也算一部分,第二个样例可能最后一个空格没打上,所以误导了。但是也这样也是WA。
为什么呢?因为还少考虑了一种情况。
2.“good morningood morning"这个是算2个的,也就是说g这个字母要特殊考虑,也就是g只要比次数多1就行。
代码如下:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <vector>
#include <cstring>
#include <map>
using namespace std;
const int maxn = 10000 + 10;
char s[maxn];
int a[30];
int main(){
int T; cin >> T;
getchar();
for(int kase = 1; kase <= T; ++kase){
gets(s);
int len = strlen(s);
memset(a, 0, sizeof(a));
int t = 0;
for(int i = 0; i < len; ++i)
if(' ' == s[i]) ++t;
else if(s[i] >= 'a') ++a[s[i]-'a'];
int m = a['d'-'a'];
m = min(m, a['i'-'a']);
m = min(m, a['r'-'a']); m = min(m, a['o'-'a']/3);
m = min(m, a['m'-'a']); m = min(m, a['n'-'a']/2);
m = min(m, t); m = min(m, a['g'-'a']-1);
printf("Case #%d: %d\n", kase, m);
}
return 0;
}
浙公网安备 33010602011771号