八皇后问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了八皇后问题相关的知识,希望对你有一定的参考价值。
package project;
public class Queen8
{
public static int num = 0;
public static final int MAXQUEEN = 8;
public static int[] cols = new int[MAXQUEEN];
public Queen8()
{
getArrangement(0);
System.out.print("/n");
System.out.println(MAXQUEEN+"皇后问题有"+num+"种摆放方法。");
}
public void getArrangement(int n)
{
boolean[] rows = new boolean[MAXQUEEN];
for(int i=0;i<n;i++)
{
rows[cols[i]]=true;
int d = n-i;
if(cols[i]-d >= 0)rows[cols[i]-d]=true;
if(cols[i]+d <= MAXQUEEN-1)rows[cols[i]+d]=true;
}
for(int i=0;i<MAXQUEEN;i++)
{
if(rows[i])continue;
cols[n] = i;
if(n<MAXQUEEN-1)
{
getArrangement(n+1);
}
else
{
num++;
printChessBoard();
}
}
}
public void printChessBoard()
{
System.out.print("第"+num+"种走法 /n");
for(int i=0;i<MAXQUEEN;i++)
{
for(int j=0;j<MAXQUEEN;j++)
{
if(i==cols[j])
{
System.out.print("0 ");
}
else
System.out.print("+ ");
}
System.out.print("/n");
}
}
public static void main(String args[])
{
Queen8 queen = new Queen8();
}
}
以上是关于八皇后问题的主要内容,如果未能解决你的问题,请参考以下文章