UVA 494 Kindergarten Counting Game

来源:互联网 发布:js获取本地file对象 编辑:程序博客网 时间:2024/06/09 21:58
#include <iostream>#include <cstdio>#include <cstring>using namespace std;// 错误思路一:用gets,空间不确定//int main ()//{//char s[100000];//while (gets(s))//{//int n = strlen(s);//int k = 0;//int index_i = 0;//for (int i=0; i<n; i++)//{//if (s[i] == ' ' || i == n-1)//{//if (s[index_i] >= 'A' && s[index_i] <= 'Z' ||//s[index_i] >= 'a' && s[index_i] <= 'z')//{//k++;//}//index_i = i+1;//}//}//cout << k << endl;//}//return 0;//}//错误思路二:遇到字母且flag标志为false时标记flag为true,//然后遇到空格或回车且flag为true时算作一个单词,再将flag置为false//错误原因分析:[由特殊情形导致]:对于and/or 这个正确答案算作是2个单词,而此程序算作1个单词,//由此把else if (c == ' ')里的内容写到下面的else 里可以AC//int main ()//{//char c;//bool flag = false;//int k = 0;//while ((c = getchar()) != EOF)//{//if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')//{//if (!flag) flag = true; //}//else if (c == ' ')//{//if (flag) //{//k++;//flag = false;//}//}//else if (c == '\n')//{//if (flag) //{//k++;//}//flag = false;//cout << k << endl;//k = 0;//}//else//{//;//}//}//return 0;//}// 正确思路:遇到第一个字母,且flag为false时算为一个单词(即只要首字符是字母的都算一个单词),其他情况都置falseint main (){char c;bool flag = false;int k = 0;while ((c = getchar()) != EOF){if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z'){if (!flag){flag = true;k++;}}else if (c == '\n'){flag = false;cout << k << endl;k = 0;}else{flag = false;}}return 0;}

0 0
原创粉丝点击