⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queen.java

📁 分别用面向过程、面向对象和函数式程序设计的方法解决八皇后问题。 附报告
💻 JAVA
字号:
class	queen_8{
	private boolean  cols[];
	private boolean  ldiag[];
	private boolean  rdiag[];

	int   pos[];
	int   cntall;	
	
	int   init( int n )
	{
	      cntall = 0;
	      cols = new boolean[n];
	      ldiag = new boolean[2*n+2];
	      rdiag = new boolean[2*n+2];
	      pos = new int[n];
	      return 0;
	      }
	
	queen_8(){
		init( 8 );
	}
	
	
	void	solvequeen(){
	      for( int i = 0; i < 8; i++)
	           tryQueen( 0 , i );
	}
	

	int   print_queens()
	{
	      cntall++;
	      System.out.println( "Solution No . " + cntall + " : ");
	      for( int i = 0 ; i < 8 ; i++)
	      {
	           System.out.print( "(" );
	           for( int j = 0 ; j <7 ; j++)
	                if( j == pos[i] ) System.out.print( "Q ");
	                else  System.out.print( "* ");
	           if( pos[i] ==7 ) System.out.println(  "Q)");
	           else       System.out.println( "*)");
	       }
	      System.out.println();
	      
	      return 0;
	           
	      } 	
	
	private	int   tryQueen( int cnt , int trycol ){
		      
	      if( cnt > 7 )
	      {
	          if( trycol == 0 ) print_queens();
	          return 0;
	      }
	      
	      if( cols[ trycol ] == true ) return 0;
	      if( ldiag[trycol+cnt] == true ) return 0;
	      if( rdiag[10-trycol+cnt] == true ) return 0; 
	      
	      cols[ trycol ] = true;
	      ldiag[trycol+cnt] = true;
	      rdiag[10-trycol+cnt] = true;
	      pos[ cnt ] = trycol;
	      
	      for( int i = 0; i < 8; i++)  tryQueen( cnt+1 , i );

	      cols[ trycol ] = false;
	      ldiag[trycol+cnt] = false;
	      rdiag[10-trycol+cnt] = false;
		      
		return 0;		

		}
}


public	class	queen{
	public	static void	main(String[] args){
		queen_8 Q;
		Q = new queen_8();
		Q.solvequeen();
		
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -