**
常用算法学习小结----八皇后问题
**
public class eightGreen {
//八个棋子的列数
public static int[] greens = new int[8];
//解的个数
public static int num = 0;
public eightGreen(){
}
//判断当前位置是否可以放置皇后棋
static public boolean isok(int row){
for(int i = 0;i<row;i++){
if(greens[row] == greens[i]||Math.abs(greens[row]-greens[i])==Math.abs(row-i)){
return false;
}
}
return true;
}
static public void green(int row){
//若row==8,则表示第八行放置了棋子,此时greens数组就是此问题的一个解
if(row == 8){
num++;
System.out.print("第"+ num +"种解:");
for (int j = 0;j<8;j++){
System.out.print(greens[j]);
}
System.out.print("\n");
}
else {
for(int i = 0;i<8;i++){
//greens[row]实际可以看成column的值,在八皇后问题中需要将当前行的每一列都去判断是否可以放置棋子
greens[row] = i;
if(isok(row)){
//当判断当前位置可以放置棋子时,继续寻找下一行棋子摆放的位置
green(row+1);
}
//若不可放置棋子则继续循环,列数加一
}
}
}
public static void main(String[] args) {
eightGreen.green(0);
}
}
看了网上大佬的方法理解过后自己敲的,留作纪念!