一个算法问题,拼图。。。 将8 7 1 变成1 2 3 只能往_的位置移动数字,请问该采取什么算法呢?求救 ,多谢 3 6 5 8 _ 4 _ 2 4 7 6 5 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 定义3*3数组-数值为0每次移动前先判断是否是边界或非0if(是) 不可移动else{ 移动 移动后判单是否与结果相同} 广度优先算法。<-这个不用说了吧?求最佳解的。需要比较好的编程技巧和大内存。也可以使用A*算法。<-需要一个比较好的估值算法。比较难。如果你只是要个方法的话,深度优先算法也可以啊。广度优先的非递归伪码:if (NowState!=Target){ NowState 出队; NowState.Next[0..3] 进队;}else 结束。队列指针++;如果使用递归更好写,但是资源相应增多。不是很简单。 关于异常处理的疑问 到底用mfc开发进销存财务系统,用基于对话框还是用多文档的模式? 应用程序线程之间指针的传递问题 ···我在写一个木马时遇到个问题··· 怎样实现在自己程序里面控制其它程序的操作? MFC下怎么使用STL? 类跑哪去了(应该不难)? 请问在 win98 下如何绑定 110 端口? 为什么我调用 bind 的时候提示错误,应该怎么解决? 线程中的蓝屏的现象 怎样知道窗口是否被置于顶层topmost CPropertySheet类问题 能不能只更新文档的某一个视图(能找到),不用UpdataAllViews()?
每次移动前先判断是否是边界或非0
if(是)
不可移动
else
{
移动
移动后判单是否与结果相同
}
if (NowState!=Target)
{
NowState 出队;
NowState.Next[0..3] 进队;
}else 结束。
队列指针++;
如果使用递归更好写,但是资源相应增多。不是很简单。