博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
马踏棋盘算法 Java实现
阅读量:2432 次
发布时间:2019-05-10

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

马在某个点最多可能有8种走法,用递归和回溯实现。

注:代码中,查找下一个可走坐标是从右下第一个开始的,也就是图中的4。可以通过修改a,b...h的值来改变顺序。

/** * 马踏棋盘算法  * 递归和回溯 * */public class HorseStep {		public static int X = 8;	public static int Y = 8;		public static int returnCount = 0;		/**	 * 棋盘	 */	public static int chess[][] = new int[X][Y];			/**	 * 找到基于(x,y)位置的下一个可走位置	 * @param x	 * @param y	 * @param count	 * @return	 */	public static int nextxy(XY xy,int count){				final int a=0,				b=1,				c=2,				d=3,				e=4,				f=5,				g=6,				h=7;				int x = xy.getX();		int y = xy.getY();				int returnInt = 0;				switch (count) {		//		从以x,y为轴心的 右下 开始				case a:			if( x+2<=X-1 && y+1<=Y-1 && chess[y+1][x+2]==0){				x +=2;				y +=1;				returnInt = 1;			}						break;					case b:			if( x+1<=X-1 && y+2<=Y-1 && chess[y+2][x+1]==0){				x +=1;				y +=2;				returnInt = 1;			}						break;					case c:			if( x-1>=0 && y+2<=Y-1 && chess[y+2][x-1]==0){				x -=1;				y +=2;				returnInt = 1;			}						break;					case d:			if( x-2>=0 && y+1<=Y-1 && chess[y+1][x-2]==0){				x -=2;				y +=1;				returnInt = 1;			}						break;				case e:			if( x-2>=0 && y-1>=0 && chess[y-1][x-2]==0){				x -=2;				y -=1;				returnInt = 1;			}						break;					case f:			if( x-1>=0 && y-2>=0 && chess[y-2][x-1]==0){				x -=1;				y -=2;				returnInt = 1;			}						break;					case g:			if( x+1<=X-1 && y-2>=0 && chess[y-2][x+1]==0){				x +=1;				y -=2;				returnInt = 1;			}						break;					case h:			if( x+2<=X-1 && y-1>=0 && chess[y-1][x+2]==0){				x +=2;				y -=1;								returnInt = 1;			}			break;					default:			break;		}				if(returnInt == 1){			xy.setX(x);			xy.setY(y);						return 1;		}		return 0;	}		/**	 * 打印棋盘	 */	public static void print(){		for(int i=0;i

结果:

如果从(0,0)开始的话

你可能感兴趣的文章
Maven编译时指定JDK版本
查看>>
Hibernate单向关联N-1
查看>>
Hibernate单向关联1-1
查看>>
jQuery自定义动画
查看>>
Spring-data-redis在shiro中的实例
查看>>
GUN C中__attribute__作用
查看>>
3、系统调用之SYSCALL_DEFINE分析
查看>>
linux的signal_pending及signal
查看>>
OBJDUMP用法
查看>>
c/cplusplus通用makefile
查看>>
JavaScript-密码强度
查看>>
【SSH】1366-InCorrect string value:'\xE9\x99\x88\xE6\x96\xB0...'for column 'name' at row 1
查看>>
SpringCloud前身之微服务
查看>>
纵览全局——SSH
查看>>
纵览全局——Mybatis
查看>>
PC端-中文转拼音后续问题
查看>>
第七章-面向对象技术
查看>>
Mybatis-略识之无
查看>>
ionic 前端 - 汉字转拼音
查看>>
Ionic-与时间有关的故事-localecompare()
查看>>