亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

馬踏棋盤算法 Java實現

2019-11-11 07:42:57
字體:
來源:轉載
供稿:網友

馬在某個點最多可能有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<X;i++){			for(int j=0;j<Y;j++){								if(chess[i][j]<10)					System.out.print(chess[i][j]+"  ");				else					System.out.print(chess[i][j]+" ");							}			System.out.println();		}			}		/**	 * 深度優先遍歷棋盤	 * @param x	 * @param y	 * @param tag	 * @return	 * (x,y)為位置坐標	 * tag是標記變量,每走一步 tag+1。	 */	public static int TravelChessBoard(XY xy,int tag){		//		馬在某個點有八種可能的方向,用來約束查找小于八種的變量		Integer count = 0;		//		馬所在位置是否可以再跳向下一個位置,0有,1無(條件:1,不出邊界,2.沒有走過)		int haveNextXy = 0;				int x = xy.getX();		int y = xy.getY();		//		x是橫軸,y是豎軸,左上角為0,0點,往右和往下遞增		chess[y][x] = tag;		//		最后一步,遞歸的終止條件		if(X*Y == tag){//			打印棋盤			print();			return 1;		}		//		找到馬的下一個可走坐標(x1,y1),如果找到為1,否則為0.		haveNextXy = nextxy(xy, count);				while( 0==haveNextXy && count<7){			count ++;			haveNextXy = nextxy(xy, count);		}				while(haveNextXy==1){			if(TravelChessBoard(xy, tag+1)==1){				return 1;			}			//			回退后,把當前點也設置為回退后的位置			xy.setX(x);			xy.setY(y);						count++;			//			找到馬的下一個可走坐標(x1,y1),如果找到flag=1,否則為0.			haveNextXy = nextxy(xy, count);						while( 0==haveNextXy && count<7){				count ++;				haveNextXy = nextxy(xy, count);			}		}		//		回退		if(haveNextXy==0){			chess[y][x]=0;			returnCount++;		}				return 0 ;	}		public static void main(String[] args) {		long begin = System.currentTimeMillis();		//		馬所在位置的坐標,x是橫軸,y是豎軸,左上角為0,0點,往右和往下遞增		XY xy = new XY();		xy.setX(1);		xy.setY(0);				if(TravelChessBoard(xy, 1)==0){			System.out.println("馬踏棋盤失敗");		}				long time = System.currentTimeMillis()-begin;				System.out.println("耗時"+time+"毫秒");		System.out.println(returnCount);	}	}class XY{	private int x;	private int y;	public int getX() {		return x;	}	public void setX(int x) {		this.x = x;	}	public int getY() {		return y;	}	public void setY(int y) {		this.y = y;	}		}

結果:

如果從(0,0)開始的話


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国语对白做受69| 亚洲欧美成人一区二区在线电影| 欧美黑人国产人伦爽爽爽| 欧美激情一级二级| 国产精品久久久久77777| 91精品久久久久久久久| 日韩欧美在线视频| 91免费精品国偷自产在线| 久久久久久成人精品| 日韩av在线网| 久久不射热爱视频精品| 91精品久久久久久久久久久久久| 91九色国产视频| 91在线视频九色| 黄色91在线观看| 欧美精品一区二区免费| 2018国产精品视频| 欧美在线一级视频| 欧美电影免费观看| 久久久久国产精品一区| 91免费视频网站| 国外成人性视频| 日本久久久久亚洲中字幕| 国内伊人久久久久久网站视频| 久久视频免费在线播放| 夜色77av精品影院| 在线观看国产欧美| 国产狼人综合免费视频| 欧洲永久精品大片ww免费漫画| 国产视频精品一区二区三区| 欧美日韩国产精品一区二区不卡中文| 尤物精品国产第一福利三区| 日韩av中文在线| 欧美国产视频一区二区| 欧洲亚洲妇女av| 精品视频—区二区三区免费| 国产精品91久久久久久| 亚洲级视频在线观看免费1级| 国产精品电影观看| 91亚洲一区精品| 一区二区三区日韩在线| 国产精品国产三级国产aⅴ浪潮| 亚洲第一av在线| 国产精品999999| 黑人巨大精品欧美一区二区一视频| 亚洲人线精品午夜| 国产精品美女呻吟| 欧美日韩一区二区免费在线观看| 欧美激情第1页| 亚洲精品国偷自产在线99热| 5252色成人免费视频| 欧美大片第1页| 亚洲国产精品美女| 亚洲天堂av女优| 亚洲欧洲日产国码av系列天堂| 亚洲一级黄色片| 日韩精品黄色网| 精品久久久久久久久中文字幕| 奇米一区二区三区四区久久| 91黄色8090| 成人免费直播live| 91产国在线观看动作片喷水| 免费av一区二区| 国产亚洲福利一区| 欧美电影免费看| 欧美日韩综合视频| 欧美成人全部免费| 国产精品久久久久久久久久尿| www欧美xxxx| 欧美激情视频网站| 日韩一二三在线视频播| 国产精品丝袜高跟| 欧美国产日韩一区| 亚洲精品美女久久久| 97国产精品视频人人做人人爱| 亚洲大尺度美女在线| 久久精品视频网站| 亚洲视频电影图片偷拍一区| 在线观看欧美视频| 国产精品91免费在线| 国产精品稀缺呦系列在线| 国产成+人+综合+亚洲欧洲| 成人444kkkk在线观看| 日韩av一区二区在线观看| 日韩高清电影好看的电视剧电影| 欧美二区乱c黑人| 日日骚av一区| 欧美专区在线播放| 亚洲网站在线播放| 国产日韩欧美自拍| 久久国产精品久久久久久久久久| 国产日本欧美在线观看| 中文字幕在线日韩| 国产亚洲精品美女| 免费成人高清视频| 九九视频直播综合网| 亚洲精品国产精品久久清纯直播| 色婷婷综合久久久久| 日本免费一区二区三区视频观看| 亚洲va国产va天堂va久久| 午夜精品久久久久久久久久久久| 日韩在线中文字幕| 欧美成人午夜免费视在线看片| 黑丝美女久久久| 亚洲欧洲午夜一线一品| 成人精品视频久久久久| 欧美多人乱p欧美4p久久| 97精品国产97久久久久久春色| 日韩中文字幕国产| 国产91精品久| 欧美午夜宅男影院在线观看| 久久精品国产欧美亚洲人人爽| 国产亚洲精品一区二区| 538国产精品一区二区在线| 久久久久久久久中文字幕| 国产综合在线观看视频| 91禁国产网站| 国产视频精品一区二区三区| 91高清视频免费观看| 久久久久久97| 日韩在线观看免费全| 欧美疯狂性受xxxxx另类| 欧美日韩第一页| 亚洲国产高清高潮精品美女| 亚洲激情视频网| 欧美一级黑人aaaaaaa做受| 色视频www在线播放国产成人| 亚洲少妇激情视频| 亚洲91精品在线| 久久久国产一区| 最近2019年中文视频免费在线观看| 欧美性感美女h网站在线观看免费| 亚洲欧美制服第一页| 久久91精品国产91久久跳| 亚洲精品久久久久中文字幕二区| 久久久精品国产一区二区| 亚洲精品99久久久久| 粉嫩老牛aⅴ一区二区三区| 亚洲欧美精品伊人久久| 欧美精品videofree1080p| 国产精品久久久久久av| 日韩亚洲精品视频| 久久久亚洲欧洲日产国码aⅴ| 正在播放国产一区| 久久精品国产免费观看| 日韩精品极品毛片系列视频| 欧美日韩国产黄| 欧美日韩国产精品一区二区三区四区| 亚洲国产高清高潮精品美女| 国产精品免费观看在线| 韩国视频理论视频久久| 国产精品亚洲自拍| 91夜夜未满十八勿入爽爽影院| 国产欧美一区二区三区久久人妖| 欧美性videos高清精品| 国产精品美女久久久久av超清| 久久视频在线免费观看| 中文字幕自拍vr一区二区三区| 亚洲精品成人网| 欧美理论在线观看| 日韩黄色高清视频| 国产在线a不卡| 欧美成人免费观看| 国产日产欧美a一级在线|