题意:给你一行字符串,让你找其中蕴含的“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 ", kase, m); } return 0; }