编程点将台(37)

软件世界

  编程点将台:一个编程爱好者学习、动手、交流的天地。注重培养编程思想,强调多种解法。

  多样的参与方式:

  每期的请战帖向各路编程好手发出邀请。来信请寄 liz@cpcw.com(请在来信中写明通讯地址和联系方式,不限开发工具和语言)。为照顾拿到报纸较晚的读者,我们会在隔一周后再公布结果。

  1.是编程好手?那就去武将堂耍耍刀枪!那里为大家提供完整程序的学习与交流。

  2.是理论英雄?那就来文臣殿会会同僚!这里和大家探讨算法和数据结构。

  3.我眼界开阔、能力过人?那你就是阿志要找的军师,直接将好的编程问题连同解法发给阿志(liz@cpcw.com),说不定下期出题的就是你!

  直接的奖励方式:

  将来信中的优秀读者大名公布在点将录中,上榜的文臣、武将的成果还将放在网上供大家学习交流,另外还将获得50元现金奖励。

  第35期的编程点将台收到了读者上百封的来信,阿志为读者们在看报的同时又动手编程的积极性感到万分高兴,所以自己也鼓足了劲,到截稿为止基本看完了所有的读者来信。

  首先,来信回答算车牌号码的读者,绝大部分都很好地完成了程序。程序开发的语言以用C/C++和VB的读者最多,其他如PASCAL等也有不少,甚至还有VFP、JSP、Flash、中文编程语言──易语言等。由于我选择的题目比较基础,主要也是为了培养基本的编程思想,所以很高兴看到大家使用的开发平台五花八门,真正是百花齐放。

  在算法上,主要是采用了穷举法,由于大家都完成得很好,具体解法就不在这儿说了。在程序优化方面的主要思路是两条:一是通过考察将根的范围限定在32~99之间,二是将前两位数和后两位数各看做一个数字来处理。两者的目的都是希望减少循环的次数,这样紧抓具体问题特点来优化程序的思路很好。

  在这也给大家一些小建议,在来信中用JAVA编程的读者不多,用C#做的几乎没有,希望大家重视这两门语言的学习。对于一些初学者,完全可以从C#开始学习程序语言,从各方面讲都比从头学VB更具价值。对于觉得没过足瘾的读者,可以多多关注请战帖里的文臣殿。

  请战帖

  武将堂

  找零钱:将100元钱换成1元、2元、5元的组合(某种钱的数量可以为零),求有多少种换法。

  文臣殿

  车厢出轨:火车有9节车厢,编号为1~9,在铁轨的左边以369247185的次序进入(如图),在中间的K1~K3三条铁轨对车厢次序进行调整,然后在右边以123456789的次序出轨。而调整的规则是每节车厢都可以进入K1~K3这三条铁轨再出轨,这三条铁轨则遵循LIFO(后入先出)的规则,请谈一下调整车厢出轨的思路和算法。

  点将录

  蒋斌:用JAVA完成第35期算车牌号的题目,并对程序做了详尽的解释。

  汪晓明:尝试用新的分组方式来完成108将的“一步一步猜英雄”。

  吴毅超:虽是17岁的初学者,也很认真地完成了算车牌号的程序。下面是他在来信中谈到的一点体会:

  ……阿志,我是一名c语言的初学者。本来学c语言是我哥的强制命令,不过因为点将台,使得我现在对c语言产生了浓厚的兴趣。希望《电脑报》能再多出一些这样的题目,不过不要太难了,毕竟像我这样初学写程序的菜鸟还是很多的啊……

  ……这道题也算是完全解出来了,虽然不是很难。但通过练习这道题,加强了我的逻辑思维能力。希望《电脑报》关于这类的问答能多一些,让我们在自己思考的同时也能借鉴一下别人的经验,取长补短……

  以上三位读者各获得50元奖励,更多的读者作品请到http://www.cpcw.com/37/rec.rar下载。