回朔法--解决N后问题

引言:下午复习算法时,越看越没有信心,尤其是在看到比较抽象的舍伍德算法。感觉看了半天都还没有弄明白该算法的意义在哪?更别谈怎么用,都准备放弃了,想象放弃等于今天下午又什么事都没有做,于是将舍伍德算法先放下,继续后面的复习,看到拉斯维加斯和回朔法一起求解N后问题;开始提及该算法时,真的是挺恐惧的,但真正自己讲代码敲下来之后,瞬间思路清晰了许多;下面将具体的求解过程做如下笔记,方便以后复习:
一:问题描述:

二:解决办法:
直接上代码:

package Nquene;

/**
 * 使用回朔法求解N后问题
 * @author 陈鹏
 *
 */
public class huishuo {
    private static int[][] cheese;
    private static final int N = 8;
    public static int count = 0;
    /**
     * 初始化棋盘
     */
    public huishuo(){
        cheese = new int[N][N];
        for(int i =0 ;i=0){
            //判断直上方
            if(arr[row-step][col]==1){
                return false;
            }
            //判断左上方:注意等号:=表示相邻
            if(col-step>=0 && arr[row-step][col-step]==1){
                return false;
            }
            //判断右上方:注意不要等号;
            if(col+step

你可能感兴趣的:(回朔法--解决N后问题)