博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
回溯法解决马步问题
阅读量:5925 次
发布时间:2019-06-19

本文共 2347 字,大约阅读时间需要 7 分钟。

   

public void GetWay()         {             map[start.X, start.Y] = 1;             int I = start.X, J = start.Y, k = 0, U = 0, V = 0;             while (true)             {                 k = 0;             Heaven:                 if (k > 7)                 {                     if (s.isEmpty())                     {                         MessageBox.Show("无解");                         return;                     }                     else                     {                         Node temp;                         temp = s.Pop();                         k = temp.k + 1;                         I = temp.i;                         J = temp.j;                         goto Heaven;                     }                 }                 else                 {                     U = I + meth[k].dx;                     V = J + meth[k].dy;                     if (U > cloumns || V > rows || U < 0 || V < 0)                     {                         k++;                         goto Heaven;                     }                     else if (map[U, V] == 1)                     {                         k++;                         goto Heaven;                     }                     else                     {                         if (U == end.X && V == end.Y)                         {                             Node n = new Node();                             n.i = I;                             n.j = J;                             n.k = k;                             s.Push(n);                             map[I, J] = 1;                             I = U;                             J = V;                             MessageBox.Show("得解");                             break;                         }                         else                         {                             Node n = new Node();                             n.i = I;                             n.j = J;                             n.k = k;                             s.Push(n);                             map[I, J] = 1;                             I = U;                             J = V;                             k++;                         }                     }                 }             }         }

 

以上是回溯法,s是栈,根据流程图可写出算法

此外我还想学习下怎么获得最短路径,希望前辈们可以指点一下。     

转载于:https://www.cnblogs.com/HelloMyWorld/archive/2012/09/10/2679485.html

你可能感兴趣的文章
安装RVDS2.2
查看>>
使用ThinkPHP框架高速开发站点(多图)
查看>>
Windows7下的免费虚拟机(微软官方虚拟机)
查看>>
实现Android半透明Menu效果的开发实例
查看>>
【转】分布式理论-CAP理论
查看>>
PHP将部分内容替换成星号
查看>>
CIO需加强对战略管理层面的掌控-精华篇
查看>>
(转)[原创]在ios android设备上使用 Protobuf (使用源码方式)
查看>>
ASP连接sql server实例解析
查看>>
[转]Infobright是一个与MySQL集成的开源数据仓库
查看>>
Android的init过程详解(一)(转)
查看>>
对全概率公式和贝叶斯公式的理解
查看>>
C/C++产生随机数
查看>>
【源代码】Set集合源代码剖析
查看>>
Ubuntu 12.04 wine QQ
查看>>
c++ 参赛设置
查看>>
数据库之触发器
查看>>
Linux pipe函数
查看>>
java检测http请求的ip地址 Java问题通用解决代码
查看>>
Circuit provides reference for multiple ADCs
查看>>