皇后问题 Bertha 。 2022-12-06 12:52 167阅读 0赞 # 问题 # > 国际象棋中的皇后,可以横向、纵向、斜向移动。如何在一个NXN的棋盘上放置N个皇后,使得任意两个皇后都不在同一条横线、竖线、斜线方向上? 举个栗子,下图的绿色格子是一个皇后在棋盘上的“封锁范围”,其他皇后不得放置在这些格子: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poaXpoZW5nZ3Vhbg_size_16_color_FFFFFF_t_70_pic_center] # 递归回溯法 # package main import "fmt" const N = 4; // 第1个N是由几行, 第2个N是有几列 var queue [N][N]int func show() { for i := 0; i < N; i++ { // 第i行 for j := 0; j < N ; j++ { //fmt.Printf("%5d", queue[i][j]) if queue[i][j]==1{ fmt.Printf("%5s","■") }else{ fmt.Printf("%5s","□") } } fmt.Println() } fmt.Println() } // 判断 第row行,第col列是否可以存放数据 func judge(row, col int) bool { for i := 0; i < col; i++ { if queue[row][i] == 1 { // 行固定, 前j列是否已经存放数据 return false } } for j := 0; j < col; j++{ if queue[row][j] == 1 { // 列固定, 前j行是否已经存放数据 return false } } for i, j := row - 1, col - 1; i >= 0 && j >= 0 ; i, j = i - 1, j - 1{ if queue[i][j] == 1 { return false } } for i, j := row - 1, col + 1; i >= 0 && j <= N - 1 ; i, j = i - 1, j + 1{ if queue[i][j] == 1 { return false } } for i, j := row + 1, col - 1; i <= N - 1 && j >= 0 ; i, j = i + 1, j - 1{ if queue[i][j] == 1 { return false } } for i, j := row - 1, col + 1; i >= 0 && j <= N - 1 ; i, j = i - 1, j + 1{ if queue[i][j] == 1 { return false } } return true } var count = 0; /* * num 的意思是:我们正在放置第i个皇后 */ func find_queue(num int) { //show() if num == N { // 所有的皇后都放完了 count++ show() return } for row := 0;row < N ; row++ { // 第num个皇后放到第num列[固定好的],[0, N)行上试探 if judge(row, num) { queue[row][num] = 1 find_queue(num + 1) queue[row][num] = 0 // 只有在皇后摆不下去的时候会执行清0的动作(避免脏数据干扰),如果皇后摆放很顺利的话从头到尾是不会走这个请0的动作的,因为已经提前走if里面的return方法结束了。 } //show() } } func main() { find_queue(0) } [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poaXpoZW5nZ3Vhbg_size_16_color_FFFFFF_t_70_pic_center]: /images/20221123/fe3746f709984326b0eee7b00a6d3b46.png
相关 皇后问题 问题 > 国际象棋中的皇后,可以横向、纵向、斜向移动。如何在一个NXN的棋盘上放置N个皇后,使得任意两个皇后都不在同一条横线、竖线、斜线方向上? 举个栗子,下图的绿色格 Bertha 。/ 2022年12月06日 12:52/ 0 赞/ 168 阅读
相关 算法分析---8皇后问题---N皇后问题 ![在这里插入图片描述][20210406171121133.png] package demo1; public class NkingsSort 一时失言乱红尘/ 2022年11月16日 05:51/ 0 赞/ 169 阅读
相关 八皇后问题 一、问题描述 ![Center][] 在8x8的国际棋盘上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能同一行、同一列、同一斜线上。 八皇后问题可以扩展为n ╰+哭是因爲堅強的太久メ/ 2022年07月14日 00:17/ 0 赞/ 198 阅读
相关 八皇后问题 回溯法求解八皇后问题 n皇后问题:n皇后问题是指在一个n\n的国际象棋棋盘上放置n个皇后,使得这n个皇后两两不在同一行,同一列,同一条对角线上,求合法的方案数。 如 小灰灰/ 2022年06月11日 08:49/ 0 赞/ 261 阅读
相关 八皇后问题 枚举法 include<iostream> using namespace std; int a[9]; int check(int n, 蔚落/ 2022年06月06日 00:38/ 0 赞/ 216 阅读
相关 八皇后问题 在国际象棋中,皇后是最强大的一枚棋子,可以吃掉与其在同一行、列和斜线的敌方棋子.八皇后问题是这样一个问题:将八个皇后摆在一张8\8的国际象棋棋盘上,使每个皇后都无法吃掉别的皇 Bertha 。/ 2022年05月18日 05:58/ 0 赞/ 215 阅读
相关 N 皇后问题 n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。 给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。 每一种解法包 喜欢ヅ旅行/ 2022年05月17日 04:52/ 0 赞/ 217 阅读
相关 皇后问题 八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横 绝地灬酷狼/ 2022年04月13日 12:28/ 0 赞/ 210 阅读
相关 八皇后问题 include <iostream> include <cmath> include <cstring> using namespace std 港控/mmm°/ 2022年01月31日 00:29/ 0 赞/ 282 阅读
相关 八皇后问题 八皇后问题,以国际象棋为背景:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任意两个皇后都不能处于 叁歲伎倆/ 2021年09月25日 15:34/ 0 赞/ 446 阅读
还没有评论,来说两句吧...