如何基于java语言实现八皇后问题
这篇文章主要介绍了如何基于java语言实现八皇后问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
八皇后问题,在一个8X8的棋盘中,放置八个棋子,每个棋子的上下左右,左上左下,右上右下方向上不得有其他棋子。正确答案为92中,接下来用java语言实现。
代码如下
packageeightQuen; /** *八皇后问题 * *@author83771 * */ publicclasseight{ //定义一个数组表示棋盘 publicstaticInteger[][]checkerBoard=newInteger[8][8]; //棋盘副本 publicstaticInteger[][]checkerBoardCopy=newInteger[8][8]; //计数器用于计数有多少种方法 publicstaticIntegerjishu=1; //定义横竖斜方向上是否有棋子 publicstaticbooleanflag1=true; publicstaticbooleanflag2=true; publicstaticbooleanflag3=true; publicstaticbooleanflag4=true; //初始化一个棋盘8x8 publicstaticvoidinit(){ for(inti=0;i<8;i++){ for(intj=0;j<8;j++){ System.out.print(0+""); checkerBoard[i][j]=0; } System.out.println(); } checkerBoardCopy=checkerBoard; } //递归测试方法 publicstaticvoidstartTest(introw){ for(intcol=0;col<8;col++){ if(checkCheet(row,col,checkerBoardCopy)==1){ if(row<7){ startTest(++row); --row; } } //该行重新赋值为0进行下一次判断 checkerBoardCopy[row][col]=0; } } //检查是否危险 //row行 //col列 publicstaticintcheckCheet(introw,intcol,Integer[][]checkerBoardCopy){ flag1=true; flag2=true; flag3=true; flag4=true; //行方向上是否满足条件 for(inti=0;i<8;i++){ if(checkerBoardCopy[row][i]==1){ flag1=false; break; } } //列方向上是否满足条件 for(intj=0;j<8;j++){ if(checkerBoardCopy[j][col]==1){ flag2=false; break; } } //右下方向 for(inti=row,j=col;i<8&j<8;i++,j++){ if(checkerBoardCopy[i][j]==1){ flag3=false; break; } } //左上方向 for(inti=row,j=col;i>=0&j>=0;i--,j--){ if(checkerBoardCopy[i][j]==1){ flag3=false; break; } } //左下方向 for(inti=row,j=col;i<8&j>=0;i++,j--){ if(checkerBoardCopy[i][j]==1){ flag4=false; break; } } //右上方向 for(inti=row,j=col;i>=0&j<8;i--,j++){ if(checkerBoardCopy[i][j]==1){ flag4=false; break; } } if(flag1&flag2&flag3&flag4){ //若为真增此点的值赋为1 checkerBoardCopy[row][col]=1; //如果已经判断到最后一行并且最后一行也符合情况打印整个棋盘 if(row==7){ printCheets(checkerBoardCopy); } return1; } return0; } //打印棋盘方法 publicstaticvoidprintCheets(Integer[][]checkerBoardCopy){ for(inti=0;i<8;i++){ for(intj=0;j<8;j++){ System.out.print(checkerBoardCopy[i][j]+""); } System.out.println(); } System.out.println("================="+jishu++); } publicstaticvoidmain(String[]args){ init(); startTest(0); } }
copy后可直接运行。记一下这次的代码。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。