您的位置:首页 > 其它

UVA 494 Kindergarten Counting Game

2016-03-22 12:02 561 查看
#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时算为一个单词(即只要首字符是字母的都算一个单词),其他情况都置false
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;
k++;
}
}
else if (c == '\n')
{
flag = false;
cout << k << endl;
k = 0;
}
else
{
flag = false;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: