递归-(已解决)自己用java写的八皇后问题算法,可是不行,求告知原因

问题描述

(已解决)自己用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

递归-(已解决)自己用java写的八皇后问题算法,可是不行,求告知原因的相关文章

Java使用递归法解决汉诺塔问题的代码示例_java

汉诺(Hanoi)塔问题:古代有一个梵塔,塔内有三个座A.B.C,A座上有n个盘子,盘子大小不等,大的在下,小的在上(如图). 有一个和尚想把这n个盘子从A座移到B座,但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上.在移动过程中可以利用B座,要求打印移动的步骤.如果只有一个盘子,则不需要利用B座,直接将盘子从A移动到C. 如果有2个盘子,可以先将盘子1上的盘子2移动到B:将盘子1移动到c:将盘子2移动到c.这说明了:可以借助B将2个盘子从A移动到C,当然,

[安卓初学者]添加按钮监听 编译通过 运行空指针[已解决]布局里按钮id不要写成name

问题描述 [安卓初学者]添加按钮监听 编译通过 运行空指针[已解决]布局里按钮id不要写成name 自学<第一行代码>到broadcastreceiver 添加按钮监听编译通过 运行提示空指针 把教材源代码复制到新android工程 问题依旧肯定是添加按钮监听代码的问题 去掉之后可以正常运行 而且我还发现 现在编写最简单 按钮跳转activity都会报同样错误 虽然自学时间不长 可是自从学会看logcat 遇到的问题 都自己解决了麻痹 这次折腾3天了 找不到问题 百度关键字 就找到一个类似的问

android eclipse 2.2版本ChatUIDemo集成红包报java.lang.NoClassDefFoundError: com.easemob.chat.EMChat(已解决)

问题描述 android eclipse下,sdk为2.2版本下,仅仅demo(ChatUIDemo)可编译运行.Android版本为6.0集成红包,编译可通过,运行报java.lang.NoClassDefFoundError: com.easemob.chat.EMChat. 解决方案 问题已解决.解决方式:使用Android studio来开发就行.环信团队在开发红包功能时是在Android studio环境下开发,是好的.估计因为时间紧,没有在eclipse下充分测试.虽然做出来了,但是

java- 输入十个数,只输出不一样的数(用JAVA)(多种方法)(已解决)

问题描述 输入十个数,只输出不一样的数(用JAVA)(多种方法)(已解决) 输入十个数,只输出不一样的数(用JAVA)(多种方法)(大一新生,简单点..) 解决方案 方法一:创建一个hashset把数字放到hashset里面就去重复了 方法二 :创建一个int数组存放数字.在存入数字前遍历数组,如果有和这个数字相等的这个数字就不存进去,进行下一个数字的判断. 其他的基本和方法二类似 解决方案二: 建立数组a,a0-a9依次取数,做循环对比,n为当前数据,if每个n++都与当前值不匹配,则retu

网易云信 java给手机写接口 curl是什么东西,跪求大神解决

问题描述 网易云信 java给手机写接口 curl是什么东西,跪求大神解决 用到的框架 spring springmvc mybatis 这是开发手册的地址http://dev.netease.im/docs?doc=server_sms 解决方案 curl是一个用来访问web和web service的库,和你用浏览器输入网址,提交参数,得到网页的原理是一样的.java中用自带的httpclient就可以了.

用Java写一个地图编辑器

用Java写一个地图编辑器 记得媒体在采访C++之父的时候,他说作为程序员,要相信自己能够解决已经理解的任何事情.换句话说:您可以解决任何问题,只要想得明白 现实问题:开发一个基于地砖的二维游戏的地图编辑器,要求生成两个binary文件,各包含一个二维数组,*.map存放地砖,花花草草什么的.*.item放道具,比如某个点可能会触发一个事件.很简单,随便写.看到这里您已经大致明白程序的整体结构.计算机语言:java. 要理解事件必须分析 初步来看,地图编辑器:生成某种形式的若干数组,无论是哪种形

代码-JAVA写着写着就懵了,数组怎么删除里面的元素呢

问题描述 JAVA写着写着就懵了,数组怎么删除里面的元素呢 不能删除或者说赋值为null ,我该添加点什么代码进去才能实现呢,还要朝前移动一位怎么解决 我感觉我自己基础不行了,求大神指明一个学习方向 import java.util.*; import javax.swing.text.StyledEditorKit.ForegroundAction; public class dvdMgr { Scanner input=new Scanner(System.in); DVD[] dvd=ne

@(报错)could not find the main class, Program will exit(已解决)

原文 @(报错)could not find the main class, Program will exit(已解决)      (很抱歉,如果你希望能更加清楚地看清图片或是图上的文字的话,你可以按住ctrl不动,然后向上滚动鼠标的滚轮.要改变回来同理向下滚动即可.) -------------------------------------------------------------------- 今天2011.4.20: 这篇文章是我刚接触myeclipse的时候写的,一年过去了,感

如何用JAVA写出健壮的代码

问题描述 如何用JAVA写出健壮的代码来源:java私塾时间:2008-6-30这是一些相当不错的忠告!每个规则都很有分量!都是长期经验积累的总结,希望能对您有所帮助,使您编出高质量的JAVA代码.(1)类名首字母应该大写.字段.方法以及对象(句柄)的首字母应小写.对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母.例如:ThisIsAClassNamethisIsMethodOrFieldName若在定义中出现了常数初始化字符,则大写staticfinal基本类型标识符