UVa 10815 - Andy's First Dictionary【排序+去重】

原题网址:

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1756


题意:

给出一篇文章,让你按字典序输出其中不同的单词


一份是书上的代码,感觉模块化非常好,不过自己不太喜欢,然后自己写自己的代码和方法

#include
using namespace std;
set dict;
int iszimu(char ch)
{
	if(ch>='A'&&ch<='Z'||ch>='a'&ch<='z')
	{
		return 1;
	}
	return 0;
}
char lowerzimu(char ch)
{
	if(ch>='A'&&ch<='Z')
	{
		return ch+32;
	}
	return ch;
}
int main()
{
	string s,buf;
	//freopen("shuju.txt","r",stdin);
	while(cin>>s)
	{
		for(int i=0;i>buf)
		{
			dict.insert(buf);
		}
	}
	set::iterator it=dict.begin();
	while(it!=dict.end())
	{
		cout<<*it<<"\n";
		++it;
	}
	return 0;
}


这道题不算难,只需要把所有的单词统计下来进行排序,然后输出不同的就可以了,但是不知道为何,用gets 输入的话就会一直wa,后来用getchar 一个一个读取才通过的............具体也不清楚怎么回事.....


#include
using namespace std;
struct word
{
	char s[205];
}x[200005];
int iszimu(char ch)
{
	if(ch>='A'&&ch<='Z'||ch>='a'&ch<='z')
	{
		return 1;
	}
	return 0;
}
char lowerzimu(char ch)
{
	if(ch>='A'&&ch<='Z')
	{
		return ch+32;
	}
	return ch;
}
int cmp(word a,word b)
{
	return strcmp(a.s,b.s)<0;
}
int main()
{
	char ch;int cnt=0,i=0;
	//freopen("shuju.txt","r",stdin);
	while((ch=getchar())!=EOF)
	{
		if(iszimu(ch))//是字母 
		{
			x[cnt].s[i++]=lowerzimu(ch);//转化为小写 
		}
		else if(!iszimu(ch)&&iszimu(x[cnt].s[0]))
		{
			x[cnt++].s[i]=0;
			i=0;
		}
	}
	sort(x,x+cnt,cmp);
	printf("%s\n",x[0].s);
	for(int i=1;i


你可能感兴趣的:(基础算法)