1212: 八皇后问题
来源:互联网 发布:电脑淘宝详情页的尺寸 编辑:程序博客网 时间:2024/06/03 16:03
题目
Description
经典的八皇后问题,在一个8*8的棋盘上放置8个皇后,使得不能互相攻击到,皇后的攻击范围的同一行,同一列以及同一个斜线。要求输出所有不会互相攻击到的摆放方式,所有通过旋转,对称都方式得到的摆放方式均认为是不同的摆放方式。棋盘被编号为0-7行,0-7列。
Input
无输入。
Output
每行一个数字代表摆放方式,如01234567代表从第0行放在0列,第1行放在1列,
第2行放在2列,按照升序输出。
Sample Input
无
Sample Output
04752613
05726314
06357142
06471352
…
只给出部分输出…都给了可以直接拷贝了…
代码块
import java.util.Arrays;public class Main { public static void main(String[] args) { Queens8(); } public static boolean Chongtu(int a[], int n)// a[]位置数组,n皇后个数 { int i = 0, j = 0; for (i = 2; i <= n; ++i) for (j = 1; j <= i - 1; ++j)//因为判断第i个棋子是否冲突(摆放是否合理),我们只需要和前面i-1列校对就ok了。这样也保证了,i>j的恒成立 if ((a[i] == a[j]) || (Math.abs(a[i] - a[j]) == i - j))// 1:在一行;2:在对角线上 return false; // 冲突 return true;// 不冲突 } // 八皇后:枚举算法 public static void Queens8() { int[] a = new int[9]; Arrays.fill(a, 0); int i = 0; for (a[1] = 0; a[1] < 8; ++a[1]) for (a[2] = 0; a[2] < 8; ++a[2]) for (a[3] = 0; a[3] < 8; ++a[3]) for (a[4] = 0; a[4] < 8; ++a[4]) for (a[5] = 0; a[5] < 8; ++a[5]) for (a[6] = 0; a[6] < 8; ++a[6]) for (a[7] = 0; a[7] < 8; ++a[7]) for (a[8] = 0; a[8] < 8; ++a[8]) { if (!Chongtu(a, 8))// 如果冲突,则继续枚举 continue; else { for (i = 1; i <= 8; ++i) System.out.print(a[i]);// 打印某种情况 System.out.printf("\n"); } } }}
阅读全文
0 0
- 1212: 八皇后问题
- 八皇后 n皇后 问题
- 八皇后N皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题(2)
- 八皇后问题(3)
- 八皇后问题
- 八皇后问题程序
- 浅谈八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题求解
- 八皇后问题
- 八皇后问题
- 对象输入流/对象输出流中的EOF异常问题解决
- Android的一些常用命令
- main
- AtCoder:A or...or B Problem(思维)
- PS流格式和解析
- 1212: 八皇后问题
- 大龄程序员的未来在何方
- 解决kindle刷多看系统的问题
- StatusBarUtil 状态栏工具类(实现沉浸式状态栏/变色状态栏)
- Maven 多web整合
- 你必须知道的28个HTML5特征、窍门和技术
- Opencv理解CV_DEFAULT宏
- 中国大学慕课C语言第七讲笔记
- H5实现扫一扫