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

如何在720云网站做全景视频网站站长seo推广

如何在720云网站做全景视频,网站站长seo推广,广东企业微信网站建设,清欢互联网网站建设八皇后问题(英文:Eight queens),是由国际象棋棋手马克斯贝瑟尔于1848年提出的问题,是回溯算法的典型案例。 问题表述为:在88格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个…

        八皇后问题(英文:Eight queens),是由国际象棋棋手马克斯·贝瑟尔于1848年提出的问题,是回溯算法的典型案例。

问题表述为:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。如果经过±90度、±180度旋转,和对角线对称变换的摆法看成一类,共有42类。计算机发明后,有多种计算机语言可以编程解决此问题。

首先是解题的思路:for循环的嵌套  遍历每一种结果

 //依次放入皇后 判断是否冲突for (int i = 0; i < max; i++) {array[n]=i;if (judge(n)){check(n+1);}//如果不冲突就继续执行array[n]=i 即将第n个皇后 放置在本行后移的一个位置}

解题思路详解: 

放置皇后的时候 n=0;直接开始第一次for循环 将一个行的第一个位置放置一个皇后 然后开始第二次for循环 进入第二次for循环的时候n已经+1开始遍历第二行  知道与第一个不冲突 开始第三次for循环 一样的道理 知道第三个与第一个和第二个都不冲突放入 直到放完最后一个 开始回溯 假如中途退出 比如放置第三个的时候每个位置都行不通 就会直接回溯 找出第二个还能放置的位置 在进入遍历第三个 放完一次 回溯到上一位 让上一位换个位置 在进入 让下一位接着遍历每一次 知道前面7个位置所有的方式都遍历完之后 首位才会发生改变  这就是输出结果为什么首位都是按序排列 因为 每一位的每一种可能都考虑到了。

开始的流程图解如下 

回溯的时候差不多大致相同

 

 这里到达顶层了 他会回到皇后7这里 让他后移一位 然后继续回到皇后8 从头遍历看看还有没有合适的解答 假如没有就会回到7 7往后遍历 然后再进8 都没有之后就会进入6 6遍历后移再进7 知道回溯到皇后1 皇后1后移继续开始最开始的流程往上走 走到头再像老样子往后走。

解释完  这里直接放代码了

定义一个输出方法

   /*** 定义一个方法输出每个皇后的位置*/public void print(){count++;for (int i = 0; i < array.length; i++) {System.out.print(array[i]+" ");}System.out.println("");}

然后定义检查是否能放置的方法

    /**** @param n n表示第n+1个皇后 第n+1行的第几个位置*          如array[1] 表示第二行的皇后在第二行的哪个位置* @return 方法是为了确定下一个皇后放在这冲不冲突*/private boolean judge(int n){//i 第i+1个皇后的下标  array[i]表示第i+1行的皇后在哪个位置for (int i = 0; i < n; i++) {//array[i]==array[n] 表示在同一行//重点解释在不在同一斜线的情况  首先要知道达成什么条件在一直线上//这里不卖关子 要知道假如两点连线与水平线形成45度角 在8*8宫格中则在同一直线上//怎么表示两点的夹角 这里Math.abs(n-i)表是行差 Math.abs(array[n]-array[i])表示列差//行差等于列差的时候就代表在一条斜线上 45度夹角 类比正方形if (array[i]==array[n] || Math.abs(n-i) == Math.abs(array[n]-array[i])){return false;}}return true;}

然后放置皇后的方法

    /*** 编写一个方法放置皇后**/public void check(int n){//如果放置完第八个皇后就打印if (n == max){print();return;}//依次放入皇后 判断是否冲突for (int i = 0; i < max; i++) {array[n]=i;if (judge(n)){check(n+1);}//如果不冲突就继续执行array[n]=i 即将第n个皇后 放置在本行后移的一个位置}}

最后主类和运行代码

    static int count = 0;/*** max表示有多少行* 这里用一维数组表示棋牌* 数组的最大容度就是有多少行* 下标+1表示哪行 每个数值表示每行的第几个 就是第几列*/int max = 8;int [] array = new int[max];public static void main(String[] args) {Queen8 queen8 = new Queen8();queen8.check(0);System.out.println(count);}

完整版

package Recursion;/*** @author:LeeGaki* @date:2022/4/26*/
public class Queen8 {static int count = 0;/*** max表示有多少行* 这里用一维数组表示棋牌* 数组的最大容度就是有多少行* 下标+1表示哪行 每个数值表示每行的第几个 就是第几列*/int max = 8;int [] array = new int[max];public static void main(String[] args) {Queen8 queen8 = new Queen8();queen8.check(0);System.out.println(count);}/*** 编写一个方法放置皇后**/public void check(int n){//如果放置完第八个皇后就打印if (n == max){print();return;}//依次放入皇后 判断是否冲突for (int i = 0; i < max; i++) {array[n]=i;if (judge(n)){check(n+1);}//如果不冲突就继续执行array[n]=i 即将第n个皇后 放置在本行后移的一个位置}}/**** @param n n表示第n+1个皇后 第n+1行的第几个位置*          如array[1] 表示第二行的皇后在第二行的哪个位置* @return 方法是为了确定下一个皇后放在这冲不冲突*/private boolean judge(int n){//i 第i+1个皇后的下标  array[i]表示第i+1行的皇后在哪个位置for (int i = 0; i < n; i++) {//array[i]==array[n] 表示在同一行//重点解释在不在同一斜线的情况  首先要知道达成什么条件在一直线上//这里不卖关子 要知道假如两点连线与水平线形成45度角 在8*8宫格中则在同一直线上//怎么表示两点的夹角 这里Math.abs(n-i)表是行差 Math.abs(array[n]-array[i])表示列差//行差等于列差的时候就代表在一条斜线上 45度夹角 类比正方形if (array[i]==array[n] || Math.abs(n-i) == Math.abs(array[n]-array[i])){return false;}}return true;}/*** 定义一个方法输出每个皇后的位置*/public void print(){count++;for (int i = 0; i < array.length; i++) {System.out.print(array[i]+" ");}System.out.println("");}
}

运行结果如下:

 太长了截不全 共92种解就对了。 

http://www.hkea.cn/news/609601/

相关文章:

  • 建设工程教育appseo技术培训中心
  • 家教中介怎么利用网站来做的免费广告推广
  • wordpress仿制建设seo是什么平台
  • 商城网站建设分为几块seo臻系统
  • 网络营销对于个人而言有什么作用seo文章
  • 做书籍封皮的网站今日中国新闻
  • 东莞建设网站电工培训技术学校
  • 深圳聘请做网站人员成都排名seo公司
  • 网站备案之后东莞网站关键词优化公司
  • 多种专业网站建设潍坊网站排名提升
  • 网站投稿系统怎么做网站制作流程是什么
  • 交警网站建设整改百度推广怎么推广
  • 重庆网站建设哪里比较好呢网站下载
  • 网站运行速度慢的原因看b站二十四小时直播间
  • 电商网站开发服务全网营销骗局揭秘
  • 个人网站怎么做互联网营销师培训课程免费
  • 微信网站建设价格网站开发报价方案
  • wordpress utc时间慢8小时大连seo关键词排名
  • 中国建设承包商网站创建软件平台该怎么做
  • 中小企业网站建设费用海外推广服务
  • 企业名称的英文做网站名seo是怎么优化推广的
  • 手机在线建站西安seo服务公司
  • 网站开发有前途吗我也要投放广告
  • 备案 网站名称怎么写crm软件
  • 扁平式网站模板b2b网站推广优化
  • 做外贸网站网络营销咨询服务
  • 江门网站建设方案报价淘宝seo优化怎么做
  • 盘龙城做网站推广网站推广
  • 如何做电子书网站域名站长工具
  • 物联网平台有哪些排名优化外包公司