问题描述
- (已解决)自己用java写的八皇后问题算法,可是不行,求告知原因
-
public class Test { public static void main(String[] args) { Empress a=new Empress(); a.find(0,0); System.out.println(a.map); } } class Empress{ public int[][] arry=new int[8][8]; public int map=0; public boolean rule(int arry[][],int k,int j){ //判断节点是否合适 for(int i=0;i<8;i++){ //行列冲突 if(arry[k][i]==1) return false; else if(arry[i][j]==1) return false; } for(int i=k-1,m=j-1;i>=0&&m>=0;i--,m--){ //左对角线 if(arry[i][m]==1) return false; } for(int i=k-1,m=j+1;i>=0&&m<=7;i--,m++){ //右对角线 if(arry[i][m]==1) return false; } return true; } public void find(int i,int m){ //寻找皇后节点 if(i>7){ //皇后解 map++; }else{ for(int j=i+1;j<8;j++){ //刷新当前结点下的数组 for(int k=0;k<8;k++){ arry[j][k]=0; } } for(;i<8;i++){ //深度优先搜索 for(;m<8;m++){ if(rule(arry,i,m)){ arry[i][m]=1; find(i+1,0); } } } } } }
解决方案
你的代码直接把我的Eclipse给卡顿了,停止按钮都没有效果了。
参考个正确版本的吧,绝对秒出结果,只需修正打印语句末尾改为"
"打印换行即可。
http://blog.csdn.net/zhong317/article/details/4586131
解决方案二:
用Java解决八皇后问题
时间: 2024-10-07 22:04:33