写Hanoi 塔问题求解过程演示程序未遂

来源:互联网 发布:安卓抢红包软件 编辑:程序博客网 时间:2024/04/29 07:01

在写那个俄罗斯方块程序之前,我想写的程序是 一个Hanoi 塔问题求解过程演示程序,因为我最近在复习数据结构,正看到递归那儿,但跟C一块写了俄罗斯方块,就把这个扔下了,这几天又看了几天OPEN GL,大致没看出个啥来,所以就想把那个演示程序写出来,结果一写两天,还是搞不定,唉,WIN32编程的这个消息机制真是不好把握,关键的部分写出来了,可是要做每个盘的移动轨迹演示就不好搞了,我的整体思路是:

1:做一个接受初始盘数输入的对话框。(最终用列表框代替了);生成基本界面就不废话了

2:生成初始状态。(实现了,可以根据你在列表框中的选择即时显示出选择了几个盘);

3:当检测到按下了“开始”按钮时,开始计算;(因为要做演示,就是要让移动的步骤一步一步做,而计算机做的太快,用空循环做延迟是不好的,正确的是要用计时器,更关键的是核心求解过程是递归求解,用计时器又不好控制,所 以我 决定先 以原始输 入盘数为参数,用递归过程计算出移动的序列,并把它存储下来,再用捕捉WM_TIMER消息每步完成一次移动实现演示);

4:结束;

别的都没错,可到接受WM_TIMER消息进行分步移动时,错综复杂,无法进行了,真是很郁闷,所以先决定放一放,反正我是为了提高学习数据结构的兴趣,我也在调度过程中看到了递归求解确实是正确无误的,就不在这儿耗了,过些日子回过头来再写,也许一下子就写出来了

 

从中我发现递归,或者计算机(这地方不好表达)的过人之处,因为我拿3个盘的塔来做,自己的做法要移动11次,而计算机生成的解法只需移动7次,厉害厉害

原创粉丝点击