package excercise6_22;
public class Code {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int count = 0; // How many solutions are found?
// Queen positions
int[] queens = new int[8]; // queens are placed at (i, queens[i])
for (int i = 0; i < 8; i++)
queens[i] = -1; // -1 indicates that no queen is currently placed in the
// ith row
queens[0] = 0; // Initially, place a queen at (0, 0) in the 0th row
// k - 1 indicates the number of queens placed so far
// We are looking for a position in the kth row to place a queen
int k = 1;
while (k >= 0) {
// Find a position to place a queen in the kth row
int j = findPosition(k, queens);
if (j < 0) {
queens[k] = -1;
k--; // back track to the previous row
} else {
queens[k] = j;
if (k == 7) {
count++; // One more solution found
System.out.println("Solution " + count + ":");
printResult(queens);
} else {
k++;
}
}
}
}
public static int findPosition(int k, int[] queens) {
int start = queens[k] == -1 ? 0 : queens[k] + 1;
for (int j = start; j < 8; j++) {
if (isValid(k, j, queens))
return j;
}
return -1;
}
/** Return true if you a queen can be placed at (k, j) */
public static boolean isValid(int k, int j, int[] queens) {
// See if (k, j) is a possible position
// Check jth column
for (int i = 0; i < k; i++) {
if (queens[i] == j)
return false;
}
// Check major diagnol
for (int row = k - 1, column = j - 1; row >= 0 && column >= 0; row--, column--) {
if (queens[row] == column)
return false;
}
// Check minor diagnol
for (int row = k - 1, column = j + 1; row >= 0 && column <= 7; row--, column--) {
if (queens[row] == column)
return false;
}
return true;
}
/** Print a two-dimensional board to display the queens */
public static void printResult(int[] queens) {
for (int i = 0; i < 8; i++) {
System.out.println(i + ", " + queens[i]);
}
System.out.println();
// Display the output
for (int i = 0; i < 8; i++) {
for (int j = 0; j < queens[i]; j++) {
System.out.print("| ");
}
System.out.print("|Q|");
for (int j = queens[i] + 1; j < 8; j++) {
System.out.print(" |");
}
System.out.println();
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Java程序设计基础篇(第8版)第六章编程题答案
共63个文件
class:30个
java:30个
classpath:1个
5星 · 超过95%的资源 需积分: 14 24 下载量 144 浏览量
2013-03-08
22:24:33
上传
评论
收藏 52KB RAR 举报
温馨提示
由于这本书有些编程题不带答案,所以我整理一下上传,希望对学这本书的人有所帮助吧
资源推荐
资源详情
资源评论
收起资源包目录
Chapter6.rar (63个子文件)
Chapter6
bin
excercise6_25
Code.class 2KB
excercise6_13
Code.class 891B
excercise6_14
Code.class 1KB
excercise6_23
Code.class 1KB
excercise6_10
Code.class 1KB
excercise6_17
Code.class 2KB
excercise6_11
Code.class 2KB
excercise6_30
Code.class 1KB
excercise6_9
Code.class 1KB
excercise6_19
Code.class 2KB
excercise6_16
Code.class 2KB
excercise6_29
Code.class 2KB
excercise6_20
Code.class 2KB
excercise6_1
Code.class 1KB
excercise6_8
Code.class 1KB
excercise6_2
Code.class 1KB
excercise6_21
Code.class 2KB
excercise6_15
Code.class 2KB
excercise6_4
Code.class 2KB
excercise6_26
Code.class 1KB
excercise6_28
Codce.class 1KB
excercise6_6
Code.class 1KB
excercise6_22
Code.class 2KB
excercise6_27
Code.class 1KB
excercise6_24
Code.class 2KB
excercise6_7
Code.class 1KB
excercise6_3
Code.class 1KB
excercise6_12
Code.class 1KB
excercise6_18
Code.class 1KB
excercise6_5
Code.class 1KB
.settings
org.eclipse.jdt.core.prefs 598B
src
excercise6_25
Code.java 1KB
excercise6_13
Code.java 582B
excercise6_14
Code.java 849B
excercise6_23
Code.java 682B
excercise6_10
Code.java 764B
excercise6_17
Code.java 992B
excercise6_11
Code.java 898B
excercise6_30
Code.java 991B
excercise6_9
Code.java 669B
excercise6_19
Code.java 1KB
excercise6_16
Code.java 2KB
excercise6_29
Code.java 1KB
excercise6_20
Code.java 2KB
excercise6_1
Code.java 963B
excercise6_8
Code.java 836B
excercise6_2
Code.java 541B
excercise6_21
Code.java 1KB
excercise6_15
Code.java 1KB
excercise6_4
Code.java 905B
excercise6_26
Code.java 1KB
excercise6_28
Codce.java 567B
excercise6_6
Code.java 1KB
excercise6_22
Code.java 2KB
excercise6_27
Code.java 1KB
excercise6_24
Code.java 1KB
excercise6_7
Code.java 483B
excercise6_3
Code.java 785B
excercise6_12
Code.java 787B
excercise6_18
Code.java 863B
excercise6_5
Code.java 842B
.project 384B
.classpath 301B
共 63 条
- 1
资源评论
- 你好疯子12014-05-21非常好,对Java学习帮助很大
- chejian1252013-11-25很好用,帮助很大
- 夏二毛2013-11-10还挺实用的。。我下了用做作业。
- qq_221777912014-11-10作业好难 答案拿来应急 会好好看的 很详细
BigLier
- 粉丝: 7
- 资源: 16
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功