POJ 1520 C++

来源:互联网 发布:外部js文件怎么写 编辑:程序博客网 时间:2024/05/22 12:21

    不知道从哪里找来的题目分类里将这题放在了sorting这一类,看了一看,还是挺有意思的,于是就开始做了。

    题目输入的要求写得很模糊啊,都不知道最多有多少个单词输入,每个单词的最大长度是多少,处理起来还是挺麻烦的,要一行行地读进来,然后自己将里面的单词抽出来,方便进行排序。我用了一个长度为1000的char数组来存放一行输入,然后用一个长度为250的char指针数组来存放一行里面包含的单词。

    处理完输入,我采用了自己写的冒泡排序的变体来对单词进行排序。这里要注意题目的单词比较规则是不分大小写的,如果直接用string::strcmp函数进行比较的话,是会出现问题的。比如题目要求无论是大写的A还是小写的a都是要排在B或b前面的,如果直接用strcmp就会出现问题了,所以,最好还是自己写一个比较的函数吧,把要比较的字符串全部转化为大写或小写来比较,C程序员,自力更生是优良传统,呵呵。

    排序的思想和冒泡排序时一样的,就是交换的时候要用一个循环找到下一个数字或单词的位置来交换,当然也可以直接用qsort来进行排序,不过就需要先把数字和单词给单独分开了。提交之后发现效率还可以,156K,0MS,一次就AC了,自己都不敢相信~~~

    不多说了,直接贴代码吧。

 

    通过这道题,对C++的指针有了更深入的了解,不会像在Java中一样,只会用数组名引用了,也顺便复习了一下冒泡排序。自己写的冒泡排序也没有对交换次数进行优化,这题的输入也不是很大所以勉强混过去了,各位大牛肯定有更好的解法,还望不吝赐教。

 

 

原创粉丝点击