2018.4.24 java实现8皇后算法

import java.util.Scanner;

public class Nqueens {
	private boolean verify(int[] arr,int i) {
		// TODO Auto-generated method stub
		for (int j = 1; j != i; j++) {
			if(j == i) {
				continue;
			}
			if(arr[i]==arr[j]||Math.abs(i-j)==Math.abs(arr[i]-arr[j])) {
				return false;
			}
		}
		return true;
	}

	private void nqueens(int[] arr,int i,int n) {
		// TODO Auto-generated method stub
		for (int j = 1; j < arr.length; j++) {
			arr[i] = j;
			if(verify(arr,i)) {
				if(i == n) {
					System.out.println("--------------------");
					for (int k = 1; k < arr.length; k++) {
						System.out.println("---" + k + "---" + arr[k]);
					}
				}else {
					nqueens(arr,i+1,n);
				}
			}
		}
	}

	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		String num = s.next();
		int n = Integer.parseInt(num);
		int[] arr = new int[n+1];
		new Nqueens().nqueens(arr,1,n);
	}
}

  运行结果:

8
--------------------
---1---1
---2---5
---3---8
---4---6
---5---3
---6---7
---7---2
---8---4
--------------------
---1---1
---2---6
---3---8
---4---3
---5---7
---6---4
---7---2
---8---5
--------------------
---1---1
---2---7
---3---4
---4---6
---5---8
---6---2
---7---5
---8---3
--------------------
---1---1
---2---7
---3---5
---4---8
---5---2
---6---4
---7---6
---8---3
--------------------
---1---2
---2---4
---3---6
---4---8
---5---3
---6---1
---7---7
---8---5
--------------------
---1---2
---2---5
---3---7
---4---1
---5---3
---6---8
---7---6
---8---4
--------------------
---1---2
---2---5
---3---7
---4---4
---5---1
---6---8
---7---6
---8---3
--------------------
---1---2
---2---6
---3---1
---4---7
---5---4
---6---8
---7---3
---8---5
--------------------
---1---2
---2---6
---3---8
---4---3
---5---1
---6---4
---7---7
---8---5
--------------------
---1---2
---2---7
---3---3
---4---6
---5---8
---6---5
---7---1
---8---4
--------------------
---1---2
---2---7
---3---5
---4---8
---5---1
---6---4
---7---6
---8---3
--------------------
---1---2
---2---8
---3---6
---4---1
---5---3
---6---5
---7---7
---8---4
--------------------
---1---3
---2---1
---3---7
---4---5
---5---8
---6---2
---7---4
---8---6
--------------------
---1---3
---2---5
---3---2
---4---8
---5---1
---6---7
---7---4
---8---6
--------------------
---1---3
---2---5
---3---2
---4---8
---5---6
---6---4
---7---7
---8---1
--------------------
---1---3
---2---5
---3---7
---4---1
---5---4
---6---2
---7---8
---8---6
--------------------
---1---3
---2---5
---3---8
---4---4
---5---1
---6---7
---7---2
---8---6
--------------------
---1---3
---2---6
---3---2
---4---5
---5---8
---6---1
---7---7
---8---4
--------------------
---1---3
---2---6
---3---2
---4---7
---5---1
---6---4
---7---8
---8---5
--------------------
---1---3
---2---6
---3---2
---4---7
---5---5
---6---1
---7---8
---8---4
--------------------
---1---3
---2---6
---3---4
---4---1
---5---8
---6---5
---7---7
---8---2
--------------------
---1---3
---2---6
---3---4
---4---2
---5---8
---6---5
---7---7
---8---1
--------------------
---1---3
---2---6
---3---8
---4---1
---5---4
---6---7
---7---5
---8---2
--------------------
---1---3
---2---6
---3---8
---4---1
---5---5
---6---7
---7---2
---8---4
--------------------
---1---3
---2---6
---3---8
---4---2
---5---4
---6---1
---7---7
---8---5
--------------------
---1---3
---2---7
---3---2
---4---8
---5---5
---6---1
---7---4
---8---6
--------------------
---1---3
---2---7
---3---2
---4---8
---5---6
---6---4
---7---1
---8---5
--------------------
---1---3
---2---8
---3---4
---4---7
---5---1
---6---6
---7---2
---8---5
--------------------
---1---4
---2---1
---3---5
---4---8
---5---2
---6---7
---7---3
---8---6
--------------------
---1---4
---2---1
---3---5
---4---8
---5---6
---6---3
---7---7
---8---2
--------------------
---1---4
---2---2
---3---5
---4---8
---5---6
---6---1
---7---3
---8---7
--------------------
---1---4
---2---2
---3---7
---4---3
---5---6
---6---8
---7---1
---8---5
--------------------
---1---4
---2---2
---3---7
---4---3
---5---6
---6---8
---7---5
---8---1
--------------------
---1---4
---2---2
---3---7
---4---5
---5---1
---6---8
---7---6
---8---3
--------------------
---1---4
---2---2
---3---8
---4---5
---5---7
---6---1
---7---3
---8---6
--------------------
---1---4
---2---2
---3---8
---4---6
---5---1
---6---3
---7---5
---8---7
--------------------
---1---4
---2---6
---3---1
---4---5
---5---2
---6---8
---7---3
---8---7
--------------------
---1---4
---2---6
---3---8
---4---2
---5---7
---6---1
---7---3
---8---5
--------------------
---1---4
---2---6
---3---8
---4---3
---5---1
---6---7
---7---5
---8---2
--------------------
---1---4
---2---7
---3---1
---4---8
---5---5
---6---2
---7---6
---8---3
--------------------
---1---4
---2---7
---3---3
---4---8
---5---2
---6---5
---7---1
---8---6
--------------------
---1---4
---2---7
---3---5
---4---2
---5---6
---6---1
---7---3
---8---8
--------------------
---1---4
---2---7
---3---5
---4---3
---5---1
---6---6
---7---8
---8---2
--------------------
---1---4
---2---8
---3---1
---4---3
---5---6
---6---2
---7---7
---8---5
--------------------
---1---4
---2---8
---3---1
---4---5
---5---7
---6---2
---7---6
---8---3
--------------------
---1---4
---2---8
---3---5
---4---3
---5---1
---6---7
---7---2
---8---6
--------------------
---1---5
---2---1
---3---4
---4---6
---5---8
---6---2
---7---7
---8---3
--------------------
---1---5
---2---1
---3---8
---4---4
---5---2
---6---7
---7---3
---8---6
--------------------
---1---5
---2---1
---3---8
---4---6
---5---3
---6---7
---7---2
---8---4
--------------------
---1---5
---2---2
---3---4
---4---6
---5---8
---6---3
---7---1
---8---7
--------------------
---1---5
---2---2
---3---4
---4---7
---5---3
---6---8
---7---6
---8---1
--------------------
---1---5
---2---2
---3---6
---4---1
---5---7
---6---4
---7---8
---8---3
--------------------
---1---5
---2---2
---3---8
---4---1
---5---4
---6---7
---7---3
---8---6
--------------------
---1---5
---2---3
---3---1
---4---6
---5---8
---6---2
---7---4
---8---7
--------------------
---1---5
---2---3
---3---1
---4---7
---5---2
---6---8
---7---6
---8---4
--------------------
---1---5
---2---3
---3---8
---4---4
---5---7
---6---1
---7---6
---8---2
--------------------
---1---5
---2---7
---3---1
---4---3
---5---8
---6---6
---7---4
---8---2
--------------------
---1---5
---2---7
---3---1
---4---4
---5---2
---6---8
---7---6
---8---3
--------------------
---1---5
---2---7
---3---2
---4---4
---5---8
---6---1
---7---3
---8---6
--------------------
---1---5
---2---7
---3---2
---4---6
---5---3
---6---1
---7---4
---8---8
--------------------
---1---5
---2---7
---3---2
---4---6
---5---3
---6---1
---7---8
---8---4
--------------------
---1---5
---2---7
---3---4
---4---1
---5---3
---6---8
---7---6
---8---2
--------------------
---1---5
---2---8
---3---4
---4---1
---5---3
---6---6
---7---2
---8---7
--------------------
---1---5
---2---8
---3---4
---4---1
---5---7
---6---2
---7---6
---8---3
--------------------
---1---6
---2---1
---3---5
---4---2
---5---8
---6---3
---7---7
---8---4
--------------------
---1---6
---2---2
---3---7
---4---1
---5---3
---6---5
---7---8
---8---4
--------------------
---1---6
---2---2
---3---7
---4---1
---5---4
---6---8
---7---5
---8---3
--------------------
---1---6
---2---3
---3---1
---4---7
---5---5
---6---8
---7---2
---8---4
--------------------
---1---6
---2---3
---3---1
---4---8
---5---4
---6---2
---7---7
---8---5
--------------------
---1---6
---2---3
---3---1
---4---8
---5---5
---6---2
---7---4
---8---7
--------------------
---1---6
---2---3
---3---5
---4---7
---5---1
---6---4
---7---2
---8---8
--------------------
---1---6
---2---3
---3---5
---4---8
---5---1
---6---4
---7---2
---8---7
--------------------
---1---6
---2---3
---3---7
---4---2
---5---4
---6---8
---7---1
---8---5
--------------------
---1---6
---2---3
---3---7
---4---2
---5---8
---6---5
---7---1
---8---4
--------------------
---1---6
---2---3
---3---7
---4---4
---5---1
---6---8
---7---2
---8---5
--------------------
---1---6
---2---4
---3---1
---4---5
---5---8
---6---2
---7---7
---8---3
--------------------
---1---6
---2---4
---3---2
---4---8
---5---5
---6---7
---7---1
---8---3
--------------------
---1---6
---2---4
---3---7
---4---1
---5---3
---6---5
---7---2
---8---8
--------------------
---1---6
---2---4
---3---7
---4---1
---5---8
---6---2
---7---5
---8---3
--------------------
---1---6
---2---8
---3---2
---4---4
---5---1
---6---7
---7---5
---8---3
--------------------
---1---7
---2---1
---3---3
---4---8
---5---6
---6---4
---7---2
---8---5
--------------------
---1---7
---2---2
---3---4
---4---1
---5---8
---6---5
---7---3
---8---6
--------------------
---1---7
---2---2
---3---6
---4---3
---5---1
---6---4
---7---8
---8---5
--------------------
---1---7
---2---3
---3---1
---4---6
---5---8
---6---5
---7---2
---8---4
--------------------
---1---7
---2---3
---3---8
---4---2
---5---5
---6---1
---7---6
---8---4
--------------------
---1---7
---2---4
---3---2
---4---5
---5---8
---6---1
---7---3
---8---6
--------------------
---1---7
---2---4
---3---2
---4---8
---5---6
---6---1
---7---3
---8---5
--------------------
---1---7
---2---5
---3---3
---4---1
---5---6
---6---8
---7---2
---8---4
--------------------
---1---8
---2---2
---3---4
---4---1
---5---7
---6---5
---7---3
---8---6
--------------------
---1---8
---2---2
---3---5
---4---3
---5---1
---6---7
---7---4
---8---6
--------------------
---1---8
---2---3
---3---1
---4---6
---5---2
---6---5
---7---7
---8---4
--------------------
---1---8
---2---4
---3---1
---4---3
---5---6
---6---2
---7---7
---8---5

原文地址:https://www.cnblogs.com/fast-walking/p/8927089.html

时间: 2024-11-09 04:51:27

2018.4.24 java实现8皇后算法的相关文章

8皇后算法

Java实现8皇后算法 1 package com.java; 2 3 /** 4 * Created by dell on 2018-08-26. 5 */ 6 public class nQueen { 7 8 /** 9 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例. 10 该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出: 11 在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上. 12 问有多少种摆法. 13 14

8皇后以及N皇后算法探究,回溯算法的JAVA实现,非递归,循环控制及其优化

上两篇博客 8皇后以及N皇后算法探究,回溯算法的JAVA实现,递归方案 8皇后以及N皇后算法探究,回溯算法的JAVA实现,非递归,数据结构“栈”实现 研究了递归方法实现回溯,解决N皇后问题,下面我们来探讨一下非递归方案 实验结果令人还是有些失望,原来非递归方案的性能并不比递归方案性能高 代码如下: package com.newflypig.eightqueen; import java.util.Date; /** * 使用循环控制来实现回溯,解决N皇后 * @author [email pr

Jeff Somers&#39;s N Queens Solutions 最快的n皇后算法

1 /* Jeff Somers 2 * 3 * Copyright (c) 2002 4 * 5 * [email protected] 6 * or 7 * [email protected] 8 * 9 * April, 2002 10 * 11 * Program: nq 12 * 13 * Program to find number of solutions to the N queens problem. 14 * This program assumes a twos compl

Java中的经典算法之冒泡排序(Bubble Sort)

Java中的经典算法之冒泡排序(Bubble Sort) 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后.重复第一趟步骤,直至全部排序完成. 举例说明:要排序数组:int[] arr={6,3,8,2,9,1}; 第一趟排序: 第一次排序:6和3比较,6大于3,交换位置:  

Lua中table内建排序与C/C++/Java/php/等内排序算法的排序效率比较

Lua这类脚本语言在处理业务逻辑作为配置文件的时候方便省事 但是在大量需要 运算的地方就显得略微不足   按照 Lua内建排序算法 对比C/C++ PHP Java等的快速排序算法进行一下比较. 快速排序算法是基于冒泡排序,优化而来,时间复杂度T(n)=O(nLog2n)  ,可见内部采用了二分策略 . 发现在LuaIDE LDT下直接运行效率要比 通过C++加载运行Lua脚本效率高的多  拿500W个数据排序 来说  ,脚本如下 同样的排序脚本Lua解释器的内置排序算法在LDT下,运行速度比通

ubuntu命令行下java工程编辑与算法(第四版)环境配置

ubuntu命令行下java工程编辑与算法(第四版)环境配置 java 命令行 javac java 在学习算法(第四版)中的实例时,因需要安装配套的java编译环境,可是在编译java文件的时候总是出各种错误,特在此总结一下. ubuntu下java环境配置 由于网上教程比较多,而且也较全面,特此摆放一个链接,跟着此教程总就可以配置好oracle的java jdk,如果想更加省事,直接在命令行下键入java,会提示安装各种开源java jdk,只需要一个命令即可: sudo apt-get i

Java常用三种算法排序比较

Java常用三种算法排序比较 冒泡排序: package demo1; /** * * @author xiaoye 2014-5-13 */ /** * 有N 个数据需要排序,则从第0 个数开始,依次比较第0 和第1 个数据, * 如果第0 个大于第1 个则两者交换,否则什么动作都不做,继续比较第 1 个第2个-, * 这样依次类推,直至所有数据都"冒泡"到数据顶上. 冒泡排序的效率 O(N*N ),比较 N*N/2 ,交换N*N/4 . */ public class Bubble

Java中各种排序算法

//插入排序:package org.rut.util.algorithm.support; import org.rut.util.algorithm.SortUtil;/** * @author treeroot * @since 2006-2-2 * @version 1.0 */public class InsertSort implements SortUtil.Sort{ /** (non-Javadoc) * @see org.rut.util.algorithm.SortUtil

Java中冒牌排序算法

冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面. 即首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后.重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到最大数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最大数.如此下去,直至最终