八皇后解法(回溯法)
package com.company; /** * Created by Administrator on 2016/9/15. */public class EigthQueue { private static int N = 8; private int count = 0; // 总方案数 private int[] flag = {-1, -1, -1, -1, -1, -1, -1, -1}; //回溯法递归实现八皇后问题 //输出棋盘 private void printChessboard(){ int [][]chessboard = new int[N][N]; for ( int i=0; i<N; i++) { chessboard[i][flag[i]] = 1; } for ( int i=0; i<N; i++) { for ( int j=0; j<N; j++) { System.out.print(String.format("%d ", chessboard[i][j])); } System.out.println(); } } private boolean checkQueen(int p){ boolean flag_t = true; int pv = flag[p]; if ( p==0) { return flag_t; } p--; for ( int i=1; p>=0; p--, i++) { if ( flag[p]==pv || flag[p]==pv-i || flag[p]==pv+i) { flag_t = false; } } return flag_t; } public void eightQueen(int p){ for ( int i=0; i<N; i++) { flag[p] = i; if ( checkQueen( p)==true && p==7) { count++; System.out.println("第" + count + "种:"); printChessboard( ); } else if ( checkQueen( p ) == true){ eightQueen(p+1); } } } public static void main(String[]args){ // 记录开始时间 long a=System.currentTimeMillis(); EigthQueue eigthQueue = new EigthQueue(); eigthQueue.eightQueen(0); // 记录结束时间 System.out.println("\r<br>执行耗时 : "+(System.currentTimeMillis()-a)/1000f+" 秒 "); }}
转载于:https://www.cnblogs.com/jy10/p/5874798.html
八皇后解法(回溯法)相关推荐
- 八皇后问题 回溯法hdu2553
N皇后问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- Bailian2754 八皇后【回溯】
2754:八皇后 总时间限制: 1000ms 内存限制: 65536kB 描述 会下国际象棋的人都很清楚:皇后可以在横.竖.斜线上不限步数地吃掉其他棋子.如何将8个皇后放在棋盘上(有8 * 8个方格) ...
- n皇后问题-回溯法求解
n皇后问题-回溯法求解 1.算法描述 在n×n格的国际象棋上摆放n个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. n皇后是由八皇后问题演变而来的.该问题 ...
- 八皇后问题、N皇后问题回溯法详解
/* * 回溯法解N皇后问题 * 使用一个一维数组表示皇后的位置 * 其中数组的下标表示皇后所在的行 * 数组元素的值表示皇后所在的列 * 这样设计的棋盘,所有皇后必定不在同一行 * * 假设前n-1 ...
- PHP实现八皇后算法-回溯算法
回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就"回溯"返回,尝试别的路径.回溯法是一种选优搜索法,按选优条件向前搜索,以 ...
- java递归-八皇后问题(回溯算法)
1.八皇后问题介绍 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于 1848 年提出:在 8×8 格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任 ...
- Bailian2698 八皇后【回溯】
2698:八皇后问题 总时间限制: 10000ms 内存限制: 65536kB 描述 在国际象棋棋盘上放置八个皇后,要求每两个皇后之间不能直接吃掉对方. 输入 无输入. 输出 按给定顺序和格式输出所有 ...
- n皇后问题(回溯法)
目录 1.问题描述 2.问题分析 3.完整源码 1.问题描述 八皇后问题是十九世纪著名的数学家高斯于1850年提出的.问题是:在8×8的棋盘上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同 ...
- [C语言]八皇后问题回溯算法
八皇后问题:在8×8格的国际象棋上摆放八个皇后,任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. 将棋盘抽象为4 * 4到20 * 20大小的矩阵 输入样例: 请输入棋盘的大小(4 ...
最新文章
- jquery之hide()用法详解
- 导入xlsx,文件到sqlite3数据库
- 入门demo---Mybatis学习笔记(三)
- web后端学习过程中技巧总结(持续更新。。。)
- 螺旋桨设计软件_第四届智能工业软件及设计技术研讨会暨2019天洑软件用户大会成功举办...
- 石油、黄金与美元的游戏
- php1.9,PHP1.9--数组
- LeetCode(575)——分糖果(JavaScript)
- 易语言卷帘菜单与json_易语言卷帘式菜单组件使用教程
- Ionic3.x/Ionic4.x项目实战视频教程
- 基于javaweb+jsp的户籍管理系统(JavaWeb MySQL JSP Bootstrap Servlet SSM SpringBoot)
- 电脑计算机怎么显示到桌面,怎么显示我的电脑到桌面
- 游戏角色设计思路规划路径有哪些?
- 【修真院“善良”系列之二】产品经理应该懂哪些术语?
- Python爬取英雄联盟英雄皮肤
- 使用python将excel单元格中指定文字加粗标红
- 计算机解题的过程实际上是实施某种算法,计算机等级考试二级C考点.doc
- 日常pytho3练习脚本之--彩票自动选号机
- sqlserver 2008 Express离线安装包
- css内边距属性、外边距属性