摘要: 1.16 24点游戏题意:给定4个数,运用加减乘除和括号,构造多项式,使得结果等于24。解法一是穷举法,四个数字有4!排列,运算符号有43种可能,外加5种加括号的方式。为什么是5种?书上没说,推断如下:括号决定先算什么,最先需要算的两个数决定了3种可能组合,那么我们可以得到:ABCD->(AB)CD, A(BC)D, AB(CD)把一个括号内的看成一个数字,那可以认为,上一步把4个数字变成了3个,现在需要把3个数字变两个,那么可以继续:(AB)CD->((AB)C)D,(AB)(CD)A(BC)D->(A(BC))D,A((BC)D)AB(CD)->(AB)(CD),A 阅读全文
posted @ 2012-10-25 15:41 罗辑 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 1.14 连连看游戏设计题意:设计连连看游戏。这道题目最关键的问题是,连连看游戏中的寻路问题,这个寻路和以往的最短路径稍微有点不一样,这里是要找一个转弯数目最少的路径。使用BFS进行搜索,需要重新定义一下最短路径的概念,这里的路径长短不再按照实际距离来算,而是按照转弯的数目来算,转弯数目越少,则路径越短。算法搜索的时候也是一步一步进行移动的,从初始点出发,首先标记所有不用转弯就能直接到达的方格弯数为0,继而从这些弯数为0的方格进行扩展,标记所有弯数为1……如此反复下去,如果弯数为2还没有找到,则表明这并不是一次有效的连接。由于这里已经限制了弯数是要小于3的,所以笔者认为可以换一个角度考虑。1) 阅读全文
posted @ 2012-10-25 11:10 罗辑 阅读(198) 评论(0) 推荐(0) 编辑