八皇后问题的java 实现

本文分享了一个八皇后问题的Java实现版本,该算法通过回溯法寻找所有可行解,介绍了核心代码及其逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上次在csdn上看了八皇后问题的视频

http://live.youkuaiyun.com/Issue291/LivePlay.aspx#

,  代码是c写的,  我把代码翻译成了java 次和大家分享一下

package test;

public class EightQuee {
 
 
 
    final int  Normalize = 9 ;
    int Num = 0;
    int[] q = new int[9];
   
 private boolean[] C = new boolean[9];
 private boolean[] L = new boolean[17];
 private boolean[] R = new boolean[17];
 
 
 public static void main(String [] args)
 {
  int i;
  EightQuee tt = new EightQuee();
  tt.Num = 0;
  for(i = 0; i < 9; i++)
  {
   tt.C[i]= true;
  }
  for(i = 0 ; i<17 ; i++)
  {
   tt.L[i] =true;
         tt.R[i] = true;
  }
  
  tt.test(1);
 }
 
 private void test(int i)
 {
   
    
  
  
  int j;
  int k;
  for(j = 1 ;j<=8 ; j++)
  {
   if(C[j]== true &&L[i+j]== true&&R[i-j+Normalize]== true)
   {
    q[i]=j;
    C[j]=false;
    L[i+j] = false;
    R[i-j+Normalize ] = false;
    if( i < 8)
    {
     test(i+1);
     
    }
    else
    {
     Num++;
     for(k=1 ;k<=8;k++)
     {
      System.out.print(q[k]+"  " );
     }
     System.out.println("");
    }
    C[j]=true;
    L[i+j] = true;
    R[i-j+Normalize ] = true;
     
   }
  }
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值