DFS-八皇后 Checker Challenge 灰太狼 2023-07-08 11:25 82阅读 0赞 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzY3MzE1Ng_size_16_color_FFFFFF_t_70] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzY3MzE1Ng_size_16_color_FFFFFF_t_70 1] 设4个数组: a\[i\]表示第i行的纵坐标为多少 b\[i\]表示第i列有没有被占用,1占用,0,没占用 c\[i\]记录左下到右上的对角线:我们可以发现,如果两个点都在左下到右上的线上,那么他们的横、纵坐标相加的值相等; d\[i\]记录右下到左上的对角线:我们可以发现,如果两个点都在右下到左上的线上,那么他们的横、纵坐标相减的值相等,但有可能是负数,所以我们偏移n 这样设4个数组,我们每次判断即可,不用再循环一次了。 import java.util.Scanner; public class 八黄后 { static int sum,n; static int a[]=new int[30]; static int b[]=new int[30]; static int c[]=new int[30]; static int d[]=new int[30]; static void dfs(int h){ if (h==n+1){ sum++; if(sum<=3){ for (int i = 1; i <n ; i++) { System.out.print(a[i]+" "); } System.out.print(a[n]); System.out.println(); } return; } for (int j = 1; j <=n ; j++) { if(b[j]!=1&&c[h+j]!=1&&d[h-j+n]!=1){ a[h]=j;//表示第h行的纵坐标为多少 b[j]=1;//表示第i列有没有被占用,1占用,0,没占用 c[h+j]=1;//左下到右上的对角线被占 d[h-j+n]=1;//右下到左上的对角线被占 dfs(h+1);//深搜 b[j]=0;//回溯 c[h+j]=0; d[h-j+n]=0; } } } public static void main(String[] args) { Scanner sc=new Scanner(System.in); n=sc.nextInt(); sum=0; dfs(1); System.out.println(sum); } } [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzY3MzE1Ng_size_16_color_FFFFFF_t_70]: https://img-blog.csdnimg.cn/20200310080805149.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzY3MzE1Ng==,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzY3MzE1Ng_size_16_color_FFFFFF_t_70 1]: https://img-blog.csdnimg.cn/20200226142849211.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzY3MzE1Ng==,size_16,color_FFFFFF,t_70
相关 八皇后问题与其深度优先搜索 (DFS) 解法 八皇后问题与其深度优先搜索 (DFS) 解法 题目背景: 八皇后问题是一个古老而经典的问题。在一个 8x8 的棋盘上,你要放置 8 个皇后,使得这些皇后之间互不攻击。这 超、凢脫俗/ 2024年02月20日 08:47/ 0 赞/ 36 阅读
相关 DFS-八皇后 Checker Challenge ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ub 灰太狼/ 2023年07月08日 11:25/ 0 赞/ 83 阅读
相关 八皇后 八皇后问题介绍 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不 ゝ一世哀愁。/ 2022年12月24日 12:57/ 0 赞/ 110 阅读
相关 八皇后 八皇后 求解思路 可以将八皇后看成全排列问题,因为每次都是在某一行选择某个位置,所以不需要考虑行的问题。每次只需要求出当前行的棋子所在列。所以可以化为全排列问 左手的ㄟ右手/ 2022年10月01日 11:44/ 0 赞/ 160 阅读
相关 八皇后 / Queen 八皇后问题 :递归实现 1. 从第一行开始递归 2. 然后枚举当前行中的每一列, 3. 如果可以 r囧r小猫/ 2022年08月24日 14:25/ 0 赞/ 171 阅读
相关 八皇后 编写出八皇后的算法->递归算法 include <stdio.h> int nCount=0; int noDanger(int row,int 深藏阁楼爱情的钟/ 2022年08月08日 05:15/ 0 赞/ 2 阅读
相关 八皇后 八皇后问题是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇 女爷i/ 2022年07月29日 10:52/ 0 赞/ 187 阅读
相关 八皇后 package 搜索; import java.io.BufferedReader; import java.io.IOException; 一时失言乱红尘/ 2022年07月12日 12:14/ 0 赞/ 174 阅读
相关 八皇后问题 枚举法 include<iostream> using namespace std; int a[9]; int check(int n, 蔚落/ 2022年06月06日 00:38/ 0 赞/ 216 阅读
相关 八皇后问题 八皇后问题,以国际象棋为背景:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任意两个皇后都不能处于 叁歲伎倆/ 2021年09月25日 15:34/ 0 赞/ 446 阅读
还没有评论,来说两句吧...