回溯法
1.定义:类似于枚举的搜索尝试过程,主要是在搜索尝试中寻找问题的解,当发现不满足求解条件时,
就回溯返回,尝试其他的路径。
2.基本思想:图的深度优先遍历,即从根节点出发遍历解空间,当遍历到某一结点时,先判断该节点是否
包含问题的解,若包含,则沿着该结点继续进行深度优先遍历,如果不包含,则回退一步。
3.回溯法解决问题的步骤
(1)针对所给的问题,确定解空间:首先明确问题的解空间,问题的解空间至少包含问题的一个(最优)解。
(2)确定结点的搜索规则
(3)以深度优先方式搜索解空间,并在搜索过程中采用剪枝函数避免无效搜索
public class exercise3 {
//定义马走日的下一位置相对于当前位置的坐标
private static int [][]next=new int[][]{
{1,2},{1,-2},{-1,2},{-1,-2},{2,1},{2,-1},{-2,1},{-2,-1}};
private static int [][]book;//走过的位置的标记
private static int [][]map;//棋盘的大小
private static int [][]a;//路径信息标号
private static int n,m;
private static int count=0;//记录多少种走法
public static void main(String[] args) {
n=5;
m=5;//棋盘为5*5
int x=0,y=0;//定义初始位置
map=new int[n]
马走日算法
最新推荐文章于 2024-05-05 23:59:10 发布
本文介绍了如何利用回溯法解决马走日问题。回溯法是一种类似于枚举的搜索尝试过程,通过深度优先遍历解空间来寻找问题的解。在马走日问题中,定义了马的下一步可能位置,以及搜索规则和剪枝函数,以避免无效搜索。代码实现了一个5x5棋盘的马走日问题,记录并输出了所有可能的走法总数。
摘要由CSDN通过智能技术生成