当前位置: 首页 > news >正文

官方网站建设要点搜索引擎优化排名培训

官方网站建设要点,搜索引擎优化排名培训,wordpress不能上传图片,网站备案是备什么在8x8的国际棋盘上,按照马走日的规则,验证是否能够走遍棋盘。 1、创建棋盘 chessBoard,是一个二维数组。 2、将当前位置设置为已经访问,然后根据当前位置,计算马儿还能走哪些位置,并放入到一个集合中&…

在8x8的国际棋盘上,按照马走日的规则,验证是否能够走遍棋盘。

1、创建棋盘 chessBoard,是一个二维数组。

2、将当前位置设置为已经访问,然后根据当前位置,计算马儿还能走哪些位置,并放入到一个集合中(ArrayList),最多有8个位置,每走一步,就使用step+1。

3、遍历ArrayList中存放的所有位置,看看哪个可以走通,如果走通,就继续,走不通,就回溯。

4、判断马儿是否完成了任务,使用step和应该走的步数比较,如果没有达到数量,则表示没有完成任务,将整个棋盘置0。

package com.horse;import java.awt.Point;
import java.util.ArrayList;
import java.util.Comparator;public class HorseChessboard {private static int X; // 棋盘的列数private static int Y; // 棋盘的行数//创建一个数组,标记棋盘的各个位置是否被访问过private static boolean visited[];//使用一个属性,标记是否棋盘的所有位置都被访问private static boolean finished; // 如果为true,表示成功public static void main(String[] args) {System.out.println("骑士周游算法,开始运行~~");//测试骑士周游算法是否正确X = 8;Y = 8;int row = 1; //马儿初始位置的行,从1开始编号int column = 1; //马儿初始位置的列,从1开始编号//创建棋盘int[][] chessboard = new int[X][Y];visited = new boolean[X * Y];//初始值都是false//测试一下耗时long start = System.currentTimeMillis();traversalChessboard(chessboard, row - 1, column - 1, 1);long end = System.currentTimeMillis();System.out.println("共耗时: " + (end - start) + " 毫秒");//输出棋盘的最后情况for(int[] rows : chessboard) {for(int step: rows) {System.out.print(step + "\t");}System.out.println();}}/*** 完成骑士周游问题的算法* @param chessboard 棋盘* @param row 马儿当前的位置的行 从0开始 * @param column 马儿当前的位置的列  从0开始* @param step 是第几步 ,初始位置就是第1步 */public static void traversalChessboard(int[][] chessboard, int row, int column, int step) {chessboard[row][column] = step;//row = 4 X = 8 column = 4 = 4 * 8 + 4 = 36visited[row * X + column] = true; //标记该位置已经访问//获取当前位置可以走的下一个位置的集合 ArrayList<Point> ps = next(new Point(column, row));//对ps进行排序,排序的规则就是对ps的所有的Point对象的下一步的位置的数目,进行非递减排序sort(ps);//遍历 pswhile(!ps.isEmpty()) {Point p = ps.remove(0);//取出下一个可以走的位置//判断该点是否已经访问过if(!visited[p.y * X + p.x]) {//说明还没有访问过traversalChessboard(chessboard, p.y, p.x, step + 1);}}//判断马儿是否完成了任务,使用   step 和应该走的步数比较 , //如果没有达到数量,则表示没有完成任务,将整个棋盘置0//说明: step < X * Y  成立的情况有两种//1. 棋盘到目前位置,仍然没有走完//2. 棋盘处于一个回溯过程if(step < X * Y && !finished ) {chessboard[row][column] = 0;visited[row * X + column] = false;} else {finished = true;}}/*** 功能: 根据当前位置(Point对象),计算马儿还能走哪些位置(Point),并放入到一个集合中(ArrayList), 最多有8个位置* @param curPoint* @return*/public static ArrayList<Point> next(Point curPoint) {//创建一个ArrayListArrayList<Point> ps = new ArrayList<Point>();//创建一个PointPoint p1 = new Point();//表示马儿可以走5这个位置if((p1.x = curPoint.x - 2) >= 0 && (p1.y = curPoint.y -1) >= 0) {ps.add(new Point(p1));}//判断马儿可以走6这个位置if((p1.x = curPoint.x - 1) >=0 && (p1.y=curPoint.y-2)>=0) {ps.add(new Point(p1));}//判断马儿可以走7这个位置if ((p1.x = curPoint.x + 1) < X && (p1.y = curPoint.y - 2) >= 0) {ps.add(new Point(p1));}//判断马儿可以走0这个位置if ((p1.x = curPoint.x + 2) < X && (p1.y = curPoint.y - 1) >= 0) {ps.add(new Point(p1));}//判断马儿可以走1这个位置if ((p1.x = curPoint.x + 2) < X && (p1.y = curPoint.y + 1) < Y) {ps.add(new Point(p1));}//判断马儿可以走2这个位置if ((p1.x = curPoint.x + 1) < X && (p1.y = curPoint.y + 2) < Y) {ps.add(new Point(p1));}//判断马儿可以走3这个位置if ((p1.x = curPoint.x - 1) >= 0 && (p1.y = curPoint.y + 2) < Y) {ps.add(new Point(p1));}//判断马儿可以走4这个位置if ((p1.x = curPoint.x - 2) >= 0 && (p1.y = curPoint.y + 1) < Y) {ps.add(new Point(p1));}return ps;}//根据当前这个一步的所有的下一步的选择位置,进行非递减排序, 减少回溯的次数public static void sort(ArrayList<Point> ps) {ps.sort(new Comparator<Point>() {@Overridepublic int compare(Point o1, Point o2) {// TODO Auto-generated method stub//获取到o1的下一步的所有位置个数int count1 = next(o1).size();//获取到o2的下一步的所有位置个数int count2 = next(o2).size();if(count1 < count2) {return -1;} else if (count1 == count2) {return 0;} else {return 1;}}});}
}

http://www.tj-hxxt.cn/news/114851.html

相关文章:

  • 山东网站优化公司我要学电脑哪里有短期培训班
  • wordpress好看的页面布局深圳seo排名优化
  • 如何做家乡网站除了百度指数还有哪些指数
  • 做网站需要去哪里备案软文的概念是什么
  • 广州高端品牌网站建设哪家公司好中文域名查询官网
  • 网站开发英文广西seo关键词怎么优化
  • 网站优化 保定网站怎么制作
  • 用vs2013网站开发新站整站优化
  • wordpress洛米主题关键词推广优化排名品牌
  • 网站建设所属行业新app推广去哪里找
  • 手机营销型网站制作谷歌seo优化
  • 武汉网站建设公司有哪些2345网址导航官方网站
  • vue 做企业网站行不谷歌seo怎么做
  • 鹤壁做网站的网络公司凡科建站小程序
  • 网站建设周期关键词排名优化公司推荐
  • asp.net 网站的头部和底部怎么来做 includeseo网站关键词优化费用
  • 百度做网站投广告免费seo网站自动推广软件
  • 南通网站外包微信推广怎么做
  • 莱芜新闻头条长尾词优化外包
  • 慈溪网站设计百度软件市场
  • 学做网站有多难百度seo什么意思
  • 北京市办理居住卡在哪个网站做seo详细教程
  • 网站建设公司发展前景专业的营销团队哪里找
  • 中国建行官方网站企业培训系统app
  • 视觉设计作品集莱阳seo外包
  • 微信公众号网站开发语言网站seo推广seo教程
  • 动态数据库网站百度旗下所有app列表
  • win2008做网站网络营销方法有几种类型
  • 中国建筑行业网站专业seo服务商
  • 工行网站跟建设网站区别营销网站建设方案