java皇后问题代码 java n皇后问题( 二 )


//如果下一个皇后放置成功,意味着本次放置已经满足条件,是一个解,此时需要恢复现场 , 进行下一次的重新放置,寻找下一个解 。
//
//------------------------------------------------------------------------------------------------------------------------*/
//if(!EightQueen(n,c+1))
//ClearChessBox(c-1,i,c+1);
}
}
return false;
}
int main()
{
EightQueen(QUEEN_NUM,1);
printf("%d\n",count);
return 0;
}
java 八皇后问题 递归 回溯你main方法也没有加上java皇后问题代码,这样吧java皇后问题代码,java皇后问题代码我给你看代码,这个比较容易理解 。
package com.aice.queen;
public class Queen{
//同栏是否有皇后,1表示有
private int[]column;
//右上至左下是否有皇后
private int[]rup;
//左上至右下是否有皇后
private int[]lup;
//解答
private int[]queen;
//解答编号
private int num;
public Queen(){
column = new int[8+1];
rup =new int[(2*8)+1];
lup = new int[(2*8)+1];
for(int i = 1;i=8;i++)
column[i]=1;
for(int i = 1;i=(2*8);i++)
rup[i] = lup[i] = 1;
queen = new int[8+1];
}
public void backtrack(int i){
if(i8){
showAnswer();
}else{
for(int j=1;j=8;j++){
if((column[j]==1)(rup[i+j]==1)
(lup[i-j+8]==1)){
queen[i]=j;
//设定为占用
column[j]=rup[i+j]=lup[i-j+8]=0;
backtrack(i+1);
column[j]=rup[i+j]=lup[i-j+8]=1;
}
}
}
}
protected void showAnswer(){
num++;
System.out.println("\n解答"+num);
for(int y=1;y=8;y++){
for(int x=1;x=8;x++){
if(queen[y]==x){
System.out.print("Q");
}else{
System.out.print(".");
}
}
System.out.println();
}
}
public static void main(String[]args){
Queen queen = new Queen();
queen.backtrack(1);
}
}
Java编程八皇后,但是第一个皇后是我们手动输入的该怎么编呢明天或后天给你代码
package algorithm;
public class Demo_3 {
/**八皇后问题:国际象棋棋盘有8行8列共64个单元格,在棋盘上放8个皇后,使其不能互相攻击 , 也就是说任意两个皇后不能处于同一行,同
* 一列或同一斜线上 。问共有多少种摆放方法 。每一种摆放方式是怎么样的?
* @param args
*/
static int count = 0;
static int[] location = new int[8];
public static void Output()
{
int i, j, flag = 1;
System.out.printf("第%2d种方案(Q表示皇后):\n", ++count);
System.out.printf("");
for(i = 1; i = 8; i ++)
{
System.out.printf("_");
}
System.out.printf("\n");
for(i = 0; i8; i ++)
{
【java皇后问题代码 java n皇后问题】System.out.printf(" |");
for(j = 0; j8; j ++)
{
if(location[i] - 1 == j)
{
System.out.printf("Q");//皇后的位置
}else
{
if(flag0)
{
System.out.printf(" ");//棋格
}else
{
System.out.printf("×");//棋格
}
}
flag = -1 * flag;
}
System.out.printf("| \n");
flag = -1 * flag;
}
System.out.printf(" ");
for(i = 1; i = 8; i ++)
{
System.out.printf("-");
}
System.out.printf("\n");
}
static void EightQueen(int n)//算法
{
int i, j;
int ct;//用于判断是否冲突
if(n == 8)//若8个皇后已放置完成
{
Output();//输出求解结果是
return;
}
for(i = 1; i = 8; i++)
{
location[n] = i ;//在该列的第i行上放置

推荐阅读