uva 494 Kindergarten Counting Game

来源:互联网 发布:巴西衰落知乎 编辑:程序博客网 时间:2024/04/29 15:52

有漏洞,但AC了,因为当i = 0 时,有可能出现 s[-1],会出现越界

 

 

小结:

 1 题意千万弄清楚,刚开始考虑的方向就错了,我将 ‘单词’ 的意思没弄清,看类似于 did!  meep. 这些加标点的都算作一个单词,就在考虑 一个单词里有标点符号还算不算一个单词,比如 i am a s.tu.dent!  这句话算几个单词,题目的意思应该是只包括大小写字母,单词中间有标点符号就算两个单词了,完全被例子给蒙住了。

 2 不要只对着例子来写代码,例子通过了,照样WA

 3 一开始思路很重要,我的思路是 有空格就加一,遇到类似于 。。。 这样的就减一,自己骗自己不会出现  .s.go.so.....      这样的代码,现在看看只要判断有多少个字母是连续着的就行了

关键词: 题意    根据示例容易思维定势

在网上又找的代码,解决了我的这个有可能越界的问题

 

http://www.cnblogs.com/liuzezhuang/archive/2012/05/31/2528611.html

 

这个是自己的:

#include <stdio.h>#include <stdlib.h>
int main(int argc, char *argv[]){    int i;    char s[200];    while (gets(s) != NULL){          int count = 0 ;          for (i = 0; i < strlen(s); i++){              if(((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z'))&&((s[i-1] >= 'a' && s[i-1] <= 'z') || (s[i-1] >= 'A' && s[i-1] <= 'Z')))       // s[-1]?                  continue;              if ((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z'))                    count++;              }          printf("%d\n",count);          }  return 0;}