zl程序教程

您现在的位置是:首页 >  其它

当前栏目

UESTC 486 Good Morning (水题+坑!)

水题 Good
2023-09-11 14:17:19 时间

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