编程点将台(35)
软件世界
上期的“等你来参与”得到了读者热烈的反响,在读者的来信中,阿志也感受了一把智慧的碰撞和大家动手动脑的激情,同时也孕育了我们的“编程点将台”这个新的栏目。
在这个栏目里,我将在每期的“请战帖”里向各路编程好手发出邀请,问题通常有难有易,不只一种回答方式,只要你有能力、肯动手,就来参与吧。文章可以细细看,程序可以慢慢写,为了照顾更多的读者,每期回答的来信在两周内都有效。不过大家要记住在给阿志的来信(liz@cpcw.com)中写明你的联系方式和通讯地址,能上“点将录”的可都要是“有名英雄”哟。
在每期的“点将录”里则将读者来信中回答较好或思路较新的佼佼者介绍给大家,同时还会提供他们的程序供大家参考交流。而对于上了我们“点将录”的读者,除了考虑将其成果刊登(获取稿酬)以外,还会寄出我们的小礼品。
请战帖
完成下述问题之一即可,不限开发语言种类,在来信中简要写明思路和给出代码或程序即可。来信请寄:liz@cpcw.com,请在来信中写明你的联系方式和通讯地址。
1.一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同; 丙说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。
2.将本期《一步一步猜英雄》中的人数从27将增加到108将,来完成该游戏。如果大家需要108将的画面,可以在以下地址下载得到:http://www.cpcw.com/35/rec.rar。
点将录
1.汤晓波,用VC开发,提供了一个Windows平台的算24点通用程序。
2.廖昱鹏,用VC开发,提供了一个算24点的控制台应用程序。
3.魏为民,在算24点的方法中,归纳表达式形式是重要的一种方法。他对这类方法进行了小结,并提出了自己的看法。
4.张海,程序实现了在数据库中导入可能的组合,在程序中调用数据库的结果,直接得到答案。
虽然严格地讲,他并没有给出新的如何自动得到24点的可能组合的方法,但就算24点这个完整解决方案而言,他却提供了另一个有趣的思路,下面就让他自己来简单讲讲:
建立一个数据库文件,比如Access的数据表。
新建表Calc24,字段如下
Num1 Num2 Num3 Num4 Result Flag
然后将所有的数字组合可能性填到表中:
1 1 1 1
......
3 4 5 6 (3+5-4)*6
......
7 7 8 8
......
10 10 10 10
计算时,先把传入的数值排序,然后直接到数据库去查找对应的记录,就可得出结果。不管什么编程语言,只要能访问数据库就能使用这个算法。
其实这就相当于黑客软件使用的字典,穷举出所有的可能性。如果你觉得写出所有的结果太麻烦,我另外加了一个字段Flag。它的作用是判断该种情况是否已经算过,如果没有,则使用某种算法(比如《电脑报》上提供的)算出结果,再填入数据库。
本期读者作品可在http://www.cpcw.com/35/legend.rar下载到。上述读者还将获得《数码摄像全接触》各一本。