觅算法--数字拼图算法

王朝知道·作者佚名  2010-09-07
窄屏简体版  字體: |||超大  
 
分類: 電腦/網絡 >> 程序設計 >> 其他編程語言
 
問題描述:

大家,肯定玩过这种小游戏:(一般现在文曲星还有这种老游戏)

3×3的方格,随机放置1,2,3,4,5,6,7,8这个八个数字,另一个是空格.

知道这种游戏的可以省去读这--(移动:空格四个方向(上下左右)的数字,可以移进空格,并且移后原数字处成为新的空格.)

当然,问题很简单,就是如何移动使得最后结果为:

1 2 3

4 5 6

7 8 0 --->0表示空格.

难度加深点就是,如何移动最少的次数来解决这个问题,时间尽量在1S钟内解决.

对于这个问题,肯定是搜索,但是我搜索学的不精通,最终没有解决出来.....现在这个问题,一直堵在胸口不是个味儿~~

我尝试过下思路:

很显然本问题,用一般搜索,会出现死循环.为了解决死循环问题,我首先想到了加深搜索(当然这方法也同时解决了”最少”的问题),但是效率很不理想,当数据一复杂了点.几乎是解决不出来.

后来,我想到了用空间换取时间(由于这是3×3格子,最多只有9!≈36万 个状态). 每次搜索,后保存已”走过的状态”来防止死循环.凭着感觉看,这种思路是没问题的.不知为什么,(也许我代码有问题),却也没有解决出来~~

在此,特地向大家请教学习.希望,能点拨一下,解决我心中的这个梗.(写代码的都知道那种问题没解决,憋在心里的滋味!)

在此,先谢谢各位.

如若在此不便指教,也可通过QQ联系我:***********(不出意外,我QQ,这几天都开着.)

为了避免,有些人,拿难懂代码想混过的话,在此声明:本人只要算法,(语句最好精练,简洁).

參考答案:

LZ可以来这里看一下,说明很生动的,呵呵,而且也有源代码

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航