迷宫问题
public class Migong {
public static void main(String[] args) {
int[][] a = new int[8][7];
for (int i = 0; i < a.length; i++) {
a[i][0] = 1;
int j;
for (j = 0; j < a[i].length; j++) {
if(i == 0 || i == 7)
a[i][j] = 1;
}
a[i][j-1] = 1;
}
a[3][1] = 1;
a[3][2] = 1;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
System.out.print(a[i][j]+" ");
}
System.out.println();
}
getWay(a, 1, 1);
System.out.println();
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
System.out.print(a[i][j]+" ");
}
System.out.println();
}
}
/*
* 规则从1 1 出发
* 到6 5 结束
* 1 墙 2 可行路线 3 走过但走不通 0 未走过
* 下右左上
*/
public static boolean getWay(int[][]a ,int i, int j) {
if(a[6][5] == 2)
return true;
if(a[i][j] ==0) {
a[i][j] = 2;
if(getWay(a, i+1, j))
return true;
else if(getWay(a, i, j+1))
return true;
else if(getWay(a, i-1, j))
return true;
else if(getWay(a, i, j-1))
return true;
else {
a[i][j] = 3;
return false;
}
}
else {
return false;
}
}
}
八皇后
public class Queen8 {
int max = 8;
int[] a = new int[max];
static int count = 0;
static int judgeCount = 0;
public static void main(String[] args) {
Queen8 queen8 = new Queen8();
queen8.check(0);
System.out.println(count);
System.out.println("共判断几次"+judgeCount);
}
private void check(int n) {
if (n == max) { // n = 8 , 其实8个皇后就既然放好
print();
return;
}
// 依次放入皇后,并判断是否冲突
for (int i = 0; i < max; i++) {
// 先把当前这个皇后 n , 放到该行的第1列
a[n] = i;
// 判断当放置第n个皇后到i列时,是否冲突
if (judge(n)) { // 不冲突
// 接着放n+1个皇后,即开始递归
check(n + 1); //
}
// 如果冲突,就继续执行 array[n] = i; 即将第n个皇后,放置在本行得 后移的一个位置
}
}
private boolean judge(int n) {
judgeCount++;
for (int i = 0; i < n; i++) {
if (a[i] == a[n] || Math.abs(n - i) == Math.abs(a[n] - a[i])) {
return false;
}
}
return true;
}
private void print() {
count++;
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
System.out.println();
}
}