当前位置: 代码迷 >> C语言 >> 见笑拉~!
  详细解决方案

见笑拉~!

热度:225   发布时间:2008-01-29 00:49:27.0
见笑拉~!
一道不是很难的题目,但判断逆序没有什么头绪.
请各位帮帮忙.

Description
某日,线性代数老师上课刚讲完逆序数,他决定今天专门点姓名拼音中的逆序数为偶数的同学。
老师规定如果名字中有两个字母的相对先后顺序与英文字母表里的顺序相反,则称为一对逆序,如果名字中有偶数对逆序,则要被点名。例如ADu, 有零对逆序,所以会被点到;而ADong有o和n,o和g,n和g三对逆序,所以不会被点。相同的字母不算逆序,所以AHua有h和a,u和a两对逆序,也会被点到。请帮助老师找出所有需要点的同学。
Input
只有一组测试数据。
数据第一行只有一个数N,表示班上有N个同学。(注意,此处没有指出N的范围,因此需要你的程序能够读入一个同学的姓名就处理并输出对应结果,而不是把所有的姓名都读入了再统一处理)
接下来N行,每行有一个同学的名字,名字不超过20个字母,全部为大写或者小写的英文字母,不包含空格等其余字符。
Output
按照输入顺序,将需要被点到的同学姓名顺序输出,一行一个,不用担心最后一组数据后多出的空行,但是不要有多余的空格,同时应该保证名字的大小写情况与输入时一致。
Sample Input
3
ADu
ADong
AHua
Sample Output
ADu
AHua
搜索更多相关的解决方案: 见笑  

----------------解决方案--------------------------------------------------------
直接统计就可以了
不过如果你用循环比较,那么花费时间为O(n^2)
如果你用统计计数,花费的时间为O(n),只有52个字母的话常数也不算很大
对于这个题,由于名字很短,两种方法时间上应该不是相差太远

不过楼主还是先用二重循环直接统计吧
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]luenghope[/un] 在 2008-1-29 00:49 的发言:[/bo]
只有一组测试数据。
数据第一行只有一个数N,表示班上有N个同学。(注意,此处没有指出N的范围,因此需要你的程序能够读入一个同学的姓名就处理并输出对应结果,而不是把所有的姓名都读入了再统一处理)
接下来N行,每行有一个同学的名字,名字不超过20个字母,全部为大写或者小写的英文字母,不包含空格等其余字符。

愚以为此题的难点不在逆序数的判断,而在于输入输出。
看:(注意,此处没有指出N的范围,因此需要你的程序能够读入一个同学的姓名就处理并输出对应结果,而不是把所有的姓名都读入了再统一处理)
再看:
Sample Input
3
ADu
ADong
AHua
Sample Output
ADu
AHua

如何能够“读入一个同学的姓名就处理并输出对应结果,而不是把所有的姓名都读入了再统一处理”,而又统一输入,统一输出。这可比判断逆序数有难度
----------------解决方案--------------------------------------------------------
我问题所在是,先输入好一个字符串,然后我不知道如何取其中的字母,请高手指点.
也很喜欢在这里与各位高手交流
----------------解决方案--------------------------------------------------------
请高手指点,急,如何取一个字符串中的一个字母?
----------------解决方案--------------------------------------------------------
  相关解决方案