项目要求
Eight Queens:同行、同列、同对角线只能有一个Queen,不能冲突。
代码如下
public class EightQueens {
// 同列有皇后则用1表示,否则为0
private int[] column;
// 右上至左下对角线有皇后则用1表示,否则为0
private int[] rup;
// 左上至右下对角线有皇后则用1表示,否则为0
private int[] lup;
// 放置皇后
private int[] queen;
// 解答编号
private int num;
// 皇后个数,可以更改为任意数
private int MaxQueen = 8;
public EightQueens() {
column = new int[MaxQueen + 1];
rup = new int[(2 * MaxQueen) + 1];
lup = new int[(2 * MaxQueen) + 1];
for (int i = 1; i <= MaxQueen; i++)
column[i] = 1;
for (int i = 1; i <= (2 * MaxQueen); i++)
rup[i] = lup[i] = 1;
queen = new int[MaxQueen + 1];
}
// 回溯法判断八皇后问题
public void backtrack(int i) {
if (i > MaxQueen) {
showAnswer();
} else {
for (int j = 1; j <= MaxQueen; j++) {
// 判断同列、对角线是否有皇后
if ((column[j] == 1) && (rup[i + j] == 1)
&& (lup[i - j + MaxQueen] == 1)) {
queen[i] = j;
// 设定为占用
column[j] = rup[i + j] = lup[i - j + MaxQueen] = 0;
backtrack(i + 1);
column[j] = rup[i + j] = lup[i - j + MaxQueen] = 1;
}
}
}
}
// 显示皇后摆放情况
public void showAnswer() {
num++;
System.out.println("\nAnswer " + num);
for (int y = 1; y <= MaxQueen; y++) {
System.out.print("|");
for (int x = 1; x <= MaxQueen; x++) {
if (queen[y] == x) {
System.out.print("Q|");
} else {
System.out.print(" |");
}
}
System.out.println();
}
}
public static void main(String[] args) {
EightQueens queen = new EightQueens();
queen.backtrack(1);
}
}
运行结果
Answer 1
|Q| | | | | | | |
| | | | |Q| | | |
| | | | | | | |Q|
| | | | | |Q| | |
| | |Q| | | | | |
| | | | | | |Q| |
| |Q| | | | | | |
| | | |Q| | | | |
Answer 2
|Q| | | | | | | |
| | | | | |Q| | |
| | | | | | | |Q|
| | |Q| | | | | |
| | | | | | |Q| |
| | | |Q| | | | |
| |Q| | | | | | |
| | | | |Q| | | |
Answer 3
|Q| | | | | | | |
| | | | | | |Q| |
| | | |Q| | | | |
| | | | | |Q| | |
| | | | | | | |Q|
| |Q| | | | | | |
| | | | |Q| | | |
| | |Q| | | | | |
Answer 4
|Q| | | | | | | |
| | | | | | |Q| |
| | | | |Q| | | |
| | | | | | | |Q|
| |Q| | | | | | |
| | | |Q| | | | |
| | | | | |Q| | |
| | |Q| | | | | |
Answer 5
| |Q| | | | | | |
| | | |Q| | | | |
| | | | | |Q| | |
| | | | | | | |Q|
| | |Q| | | | | |
|Q| | | | | | | |
| | | | | | |Q| |
| | | | |Q| | | |
Answer 6
| |Q| | | | | | |
| | | | |Q| | | |
| | | | | | |Q| |
|Q| | | | | | | |
| | |Q| | | | | |
| | | | | | | |Q|
| | | | | |Q| | |
| | | |Q| | | | |
Answer 7
| |Q| | | | | | |
| | | | |Q| | | |
| | | | | | |Q| |
| | | |Q| | | | |
|Q| | | | | | | |
| | | | | | | |Q|
| | | | | |Q| | |
| | |Q| | | | | |
Answer 8
| |Q| | | | | | |
| | | | | |Q| | |
|Q| | | | | | | |
| | | | | | |Q| |
| | | |Q| | | | |
| | | | | | | |Q|
| | |Q| | | | | |
| | | | |Q| | | |
Answer 9
| |Q| | | | | | |
| | | | | |Q| | |
| | | | | | | |Q|
| | |Q| | | | | |
|Q| | | | | | | |
| | | |Q| | | | |
| | | | | | |Q| |
| | | | |Q| | | |
Answer 10
| |Q| | | | | | |
| | | | | | |Q| |
| | |Q| | | | | |
| | | | | |Q| | |
| | | | | | | |Q|
| | | | |Q| | | |
|Q| | | | | | | |
| | | |Q| | | | |
Answer 11
| |Q| | | | | | |
| | | | | | |Q| |
| | | | |Q| | | |
| | | | | | | |Q|
|Q| | | | | | | |
| | | |Q| | | | |
| | | | | |Q| | |
| | |Q| | | | | |
Answer 12
| |Q| | | | | | |
| | | | | | | |Q|
| | | | | |Q| | |
|Q| | | | | | | |
| | |Q| | | | | |
| | | | |Q| | | |
| | | | | | |Q| |
| | | |Q| | | | |
Answer 13
| | |Q| | | | | |
|Q| | | | | | | |
| | | | | | |Q| |
| | | | |Q| | | |
| | | | | | | |Q|
| |Q| | | | | | |
| | | |Q| | | | |
| | | | | |Q| | |
Answer 14
| | |Q| | | | | |
| | | | |Q| | | |
| |Q| | | | | | |
| | | | | | | |Q|
|Q| | | | | | | |
| | | | | | |Q| |
| | | |Q| | | | |
| | | | | |Q| | |
Answer 15
| | |Q| | | | | |
| | | | |Q| | | |
| |Q| | | | | | |
| | | | | | | |Q|
| | | | | |Q| | |
| | | |Q| | | | |
| | | | | | |Q| |
|Q| | | | | | | |
Answer 16
| | |Q| | | | | |
| | | | |Q| | | |
| | | | | | |Q| |
|Q| | | | | | | |
| | | |Q| | | | |
| |Q| | | | | | |
| | | | | | | |Q|
| | | | | |Q| | |
Answer 17
| | |Q| | | | | |
| | | | |Q| | | |
| | | | | | | |Q|
| | | |Q| | | | |
|Q| | | | | | | |
| | | | | | |Q| |
| |Q| | | | | | |
| | | | | |Q| | |
Answer 18
| | |Q| | | | | |
| | | | | |Q| | |
| |Q| | | | | | |
| | | | |Q| | | |
| | | | | | | |Q|
|Q| | | | | | | |
| | | | | | |Q| |
| | | |Q| | | | |
Answer 19
| | |Q| | | | | |
| | | | | |Q| | |
| |Q| | | | | | |
| | | | | | |Q| |
|Q| | | | | | | |
| | | |Q| | | | |
| | | | | | | |Q|
| | | | |Q| | | |
Answer 20
| | |Q| | | | | |
| | | | | |Q| | |
| |Q| | | | | | |
| | | | | | |Q| |
| | | | |Q| | | |
|Q| | | | | | | |
| | | | | | | |Q|
| | | |Q| | | | |
Answer 21
| | |Q| | | | | |
| | | | | |Q| | |
| | | |Q| | | | |
|Q| | | | | | | |
| | | | | | | |Q|
| | | | |Q| | | |
| | | | | | |Q| |
| |Q| | | | | | |
Answer 22
| | |Q| | | | | |
| | | | | |Q| | |
| | | |Q| | | | |
| |Q| | | | | | |
| | | | | | | |Q|
| | | | |Q| | | |
| | | | | | |Q| |
|Q| | | | | | | |
Answer 23
| | |Q| | | | | |
| | | | | |Q| | |
| | | | | | | |Q|
|Q| | | | | | | |
| | | |Q| | | | |
| | | | | | |Q| |
| | | | |Q| | | |
| |Q| | | | | | |
Answer 24
| | |Q| | | | | |
| | | | | |Q| | |
| | | | | | | |Q|
|Q| | | | | | | |
| | | | |Q| | | |
| | | | | | |Q| |
| |Q| | | | | | |
| | | |Q| | | | |
Answer 25
| | |Q| | | | | |
| | | | | |Q| | |
| | | | | | | |Q|
| |Q| | | | | | |
| | | |Q| | | | |
|Q| | | | | | | |
| | | | | | |Q| |
| | | | |Q| | | |
Answer 26
| | |Q| | | | | |
| | | | | | |Q| |
| |Q| | | | | | |
| | | | | | | |Q|
| | | | |Q| | | |
|Q| | | | | | | |
| | | |Q| | | | |
| | | | | |Q| | |
Answer 27
| | |Q| | | | | |
| | | | | | |Q| |
| |Q| | | | | | |
| | | | | | | |Q|
| | | | | |Q| | |
| | | |Q| | | | |
|Q| | | | | | | |
| | | | |Q| | | |
Answer 28
| | |Q| | | | | |
| | | | | | | |Q|
| | | |Q| | | | |
| | | | | | |Q| |
|Q| | | | | | | |
| | | | | |Q| | |
| |Q| | | | | | |
| | | | |Q| | | |
Answer 29
| | | |Q| | | | |
|Q| | | | | | | |
| | | | |Q| | | |
| | | | | | | |Q|
| |Q| | | | | | |
| | | | | | |Q| |
| | |Q| | | | | |
| | | | | |Q| | |
Answer 30
| | | |Q| | | | |
|Q| | | | | | | |
| | | | |Q| | | |
| | | | | | | |Q|
| | | | | |Q| | |
| | |Q| | | | | |
| | | | | | |Q| |
| |Q| | | | | | |
Answer 31
| | | |Q| | | | |
| |Q| | | | | | |
| | | | |Q| | | |
| | | | | | | |Q|
| | | | | |Q| | |
|Q| | | | | | | |
| | |Q| | | | | |
| | | | | | |Q| |
Answer 32
| | | |Q| | | | |
| |Q| | | | | | |
| | | | | | |Q| |
| | |Q| | | | | |
| | | | | |Q| | |
| | | | | | | |Q|
|Q| | | | | | | |
| | | | |Q| | | |
Answer 33
| | | |Q| | | | |
| |Q| | | | | | |
| | | | | | |Q| |
| | |Q| | | | | |
| | | | | |Q| | |
| | | | | | | |Q|
| | | | |Q| | | |
|Q| | | | | | | |
Answer 34
| | | |Q| | | | |
| |Q| | | | | | |
| | | | | | |Q| |
| | | | |Q| | | |
|Q| | | | | | | |
| | | | | | | |Q|
| | | | | |Q| | |
| | |Q| | | | | |
Answer 35
| | | |Q| | | | |
| |Q| | | | | | |
| | | | | | | |Q|
| | | | |Q| | | |
| | | | | | |Q| |
|Q| | | | | | | |
| | |Q| | | | | |
| | | | | |Q| | |
Answer 36
| | | |Q| | | | |
| |Q| | | | | | |
| | | | | | | |Q|
| | | | | |Q| | |
|Q| | | | | | | |
| | |Q| | | | | |
| | | | |Q| | | |
| | | | | | |Q| |
Answer 37
| | | |Q| | | | |
| | | | | |Q| | |
|Q| | | | | | | |
| | | | |Q| | | |
| |Q| | | | | | |
| | | | | | | |Q|
| | |Q| | | | | |
| | | | | | |Q| |
Answer 38
| | | |Q| | | | |
| | | | | |Q| | |
| | | | | | | |Q|
| |Q| | | | | | |
| | | | | | |Q| |
|Q| | | | | | | |
| | |Q| | | | | |
| | | | |Q| | | |
Answer 39
| | | |Q| | | | |
| | | | | |Q| | |
| | | | | | | |Q|
| | |Q| | | | | |
|Q| | | | | | | |
| | | | | | |Q| |
| | | | |Q| | | |
| |Q| | | | | | |
Answer 40
| | | |Q| | | | |
| | | | | | |Q| |
|Q| | | | | | | |
| | | | | | | |Q|
| | | | |Q| | | |
| |Q| | | | | | |
| | | | | |Q| | |
| | |Q| | | | | |
Answer 41
| | | |Q| | | | |
| | | | | | |Q| |
| | |Q| | | | | |
| | | | | | | |Q|
| |Q| | | | | | |
| | | | |Q| | | |
|Q| | | | | | | |
| | | | | |Q| | |
Answer 42
| | | |Q| | | | |
| | | | | | |Q| |
| | | | |Q| | | |
| |Q| | | | | | |
| | | | | |Q| | |
|Q| | | | | | | |
| | |Q| | | | | |
| | | | | | | |Q|
Answer 43
| | | |Q| | | | |
| | | | | | |Q| |
| | | | |Q| | | |
| | |Q| | | | | |
|Q| | | | | | | |
| | | | | |Q| | |
| | | | | | | |Q|
| |Q| | | | | | |
Answer 44
| | | |Q| | | | |
| | | | | | | |Q|
|Q| | | | | | | |
| | |Q| | | | | |
| | | | | |Q| | |
| |Q| | | | | | |
| | | | | | |Q| |
| | | | |Q| | | |
Answer 45
| | | |Q| | | | |
| | | | | | | |Q|
|Q| | | | | | | |
| | | | |Q| | | |
| | | | | | |Q| |
| |Q| | | | | | |
| | | | | |Q| | |
| | |Q| | | | | |
Answer 46
| | | |Q| | | | |
| | | | | | | |Q|
| | | | |Q| | | |
| | |Q| | | | | |
|Q| | | | | | | |
| | | | | | |Q| |
| |Q| | | | | | |
| | | | | |Q| | |
Answer 47
| | | | |Q| | | |
|Q| | | | | | | |
| | | |Q| | | | |
| | | | | |Q| | |
| | | | | | | |Q|
| |Q| | | | | | |
| | | | | | |Q| |
| | |Q| | | | | |
Answer 48
| | | | |Q| | | |
|Q| | | | | | | |
| | | | | | | |Q|
| | | |Q| | | | |
| |Q| | | | | | |
| | | | | | |Q| |
| | |Q| | | | | |
| | | | | |Q| | |
Answer 49
| | | | |Q| | | |
|Q| | | | | | | |
| | | | | | | |Q|
| | | | | |Q| | |
| | |Q| | | | | |
| | | | | | |Q| |
| |Q| | | | | | |
| | | |Q| | | | |
Answer 50
| | | | |Q| | | |
| |Q| | | | | | |
| | | |Q| | | | |
| | | | | |Q| | |
| | | | | | | |Q|
| | |Q| | | | | |
|Q| | | | | | | |
| | | | | | |Q| |
Answer 51
| | | | |Q| | | |
| |Q| | | | | | |
| | | |Q| | | | |
| | | | | | |Q| |
| | |Q| | | | | |
| | | | | | | |Q|
| | | | | |Q| | |
|Q| | | | | | | |
Answer 52
| | | | |Q| | | |
| |Q| | | | | | |
| | | | | |Q| | |
|Q| | | | | | | |
| | | | | | |Q| |
| | | |Q| | | | |
| | | | | | | |Q|
| | |Q| | | | | |
Answer 53
| | | | |Q| | | |
| |Q| | | | | | |
| | | | | | | |Q|
|Q| | | | | | | |
| | | |Q| | | | |
| | | | | | |Q| |
| | |Q| | | | | |
| | | | | |Q| | |
Answer 54
| | | | |Q| | | |
| | |Q| | | | | |
|Q| | | | | | | |
| | | | | |Q| | |
| | | | | | | |Q|
| |Q| | | | | | |
| | | |Q| | | | |
| | | | | | |Q| |
Answer 55
| | | | |Q| | | |
| | |Q| | | | | |
|Q| | | | | | | |
| | | | | | |Q| |
| |Q| | | | | | |
| | | | | | | |Q|
| | | | | |Q| | |
| | | |Q| | | | |
Answer 56
| | | | |Q| | | |
| | |Q| | | | | |
| | | | | | | |Q|
| | | |Q| | | | |
| | | | | | |Q| |
|Q| | | | | | | |
| | | | | |Q| | |
| |Q| | | | | | |
Answer 57
| | | | |Q| | | |
| | | | | | |Q| |
|Q| | | | | | | |
| | |Q| | | | | |
| | | | | | | |Q|
| | | | | |Q| | |
| | | |Q| | | | |
| |Q| | | | | | |
Answer 58
| | | | |Q| | | |
| | | | | | |Q| |
|Q| | | | | | | |
| | | |Q| | | | |
| |Q| | | | | | |
| | | | | | | |Q|
| | | | | |Q| | |
| | |Q| | | | | |
Answer 59
| | | | |Q| | | |
| | | | | | |Q| |
| |Q| | | | | | |
| | | |Q| | | | |
| | | | | | | |Q|
|Q| | | | | | | |
| | |Q| | | | | |
| | | | | |Q| | |
Answer 60
| | | | |Q| | | |
| | | | | | |Q| |
| |Q| | | | | | |
| | | | | |Q| | |
| | |Q| | | | | |
|Q| | | | | | | |
| | | |Q| | | | |
| | | | | | | |Q|
Answer 61
| | | | |Q| | | |
| | | | | | |Q| |
| |Q| | | | | | |
| | | | | |Q| | |
| | |Q| | | | | |
|Q| | | | | | | |
| | | | | | | |Q|
| | | |Q| | | | |
Answer 62
| | | | |Q| | | |
| | | | | | |Q| |
| | | |Q| | | | |
|Q| | | | | | | |
| | |Q| | | | | |
| | | | | | | |Q|
| | | | | |Q| | |
| |Q| | | | | | |
Answer 63
| | | | |Q| | | |
| | | | | | | |Q|
| | | |Q| | | | |
|Q| | | | | | | |
| | |Q| | | | | |
| | | | | |Q| | |
| |Q| | | | | | |
| | | | | | |Q| |
Answer 64
| | | | |Q| | | |
| | | | | | | |Q|
| | | |Q| | | | |
|Q| | | | | | | |
| | | | | | |Q| |
| |Q| | | | | | |
| | | | | |Q| | |
| | |Q| | | | | |
Answer 65
| | | | | |Q| | |
|Q| | | | | | | |
| | | | |Q| | | |
| |Q| | | | | | |
| | | | | | | |Q|
| | |Q| | | | | |
| | | | | | |Q| |
| | | |Q| | | | |
Answer 66
| | | | | |Q| | |
| |Q| | | | | | |
| | | | | | |Q| |
|Q| | | | | | | |
| | |Q| | | | | |
| | | | |Q| | | |
| | | | | | | |Q|
| | | |Q| | | | |
Answer 67
| | | | | |Q| | |
| |Q| | | | | | |
| | | | | | |Q| |
|Q| | | | | | | |
| | | |Q| | | | |
| | | | | | | |Q|
| | | | |Q| | | |
| | |Q| | | | | |
Answer 68
| | | | | |Q| | |
| | |Q| | | | | |
|Q| | | | | | | |
| | | | | | |Q| |
| | | | |Q| | | |
| | | | | | | |Q|
| |Q| | | | | | |
| | | |Q| | | | |
Answer 69
| | | | | |Q| | |
| | |Q| | | | | |
|Q| | | | | | | |
| | | | | | | |Q|
| | | |Q| | | | |
| |Q| | | | | | |
| | | | | | |Q| |
| | | | |Q| | | |
Answer 70
| | | | | |Q| | |
| | |Q| | | | | |
|Q| | | | | | | |
| | | | | | | |Q|
| | | | |Q| | | |
| |Q| | | | | | |
| | | |Q| | | | |
| | | | | | |Q| |
Answer 71
| | | | | |Q| | |
| | |Q| | | | | |
| | | | |Q| | | |
| | | | | | |Q| |
|Q| | | | | | | |
| | | |Q| | | | |
| |Q| | | | | | |
| | | | | | | |Q|
Answer 72
| | | | | |Q| | |
| | |Q| | | | | |
| | | | |Q| | | |
| | | | | | | |Q|
|Q| | | | | | | |
| | | |Q| | | | |
| |Q| | | | | | |
| | | | | | |Q| |
Answer 73
| | | | | |Q| | |
| | |Q| | | | | |
| | | | | | |Q| |
| |Q| | | | | | |
| | | |Q| | | | |
| | | | | | | |Q|
|Q| | | | | | | |
| | | | |Q| | | |
Answer 74
| | | | | |Q| | |
| | |Q| | | | | |
| | | | | | |Q| |
| |Q| | | | | | |
| | | | | | | |Q|
| | | | |Q| | | |
|Q| | | | | | | |
| | | |Q| | | | |
Answer 75
| | | | | |Q| | |
| | |Q| | | | | |
| | | | | | |Q| |
| | | |Q| | | | |
|Q| | | | | | | |
| | | | | | | |Q|
| |Q| | | | | | |
| | | | |Q| | | |
Answer 76
| | | | | |Q| | |
| | | |Q| | | | |
|Q| | | | | | | |
| | | | |Q| | | |
| | | | | | | |Q|
| |Q| | | | | | |
| | | | | | |Q| |
| | |Q| | | | | |
Answer 77
| | | | | |Q| | |
| | | |Q| | | | |
| |Q| | | | | | |
| | | | | | | |Q|
| | | | |Q| | | |
| | | | | | |Q| |
|Q| | | | | | | |
| | |Q| | | | | |
Answer 78
| | | | | |Q| | |
| | | |Q| | | | |
| | | | | | |Q| |
|Q| | | | | | | |
| | |Q| | | | | |
| | | | |Q| | | |
| |Q| | | | | | |
| | | | | | | |Q|
Answer 79
| | | | | |Q| | |
| | | |Q| | | | |
| | | | | | |Q| |
|Q| | | | | | | |
| | | | | | | |Q|
| |Q| | | | | | |
| | | | |Q| | | |
| | |Q| | | | | |
Answer 80
| | | | | |Q| | |
| | | | | | | |Q|
| |Q| | | | | | |
| | | |Q| | | | |
|Q| | | | | | | |
| | | | | | |Q| |
| | | | |Q| | | |
| | |Q| | | | | |
Answer 81
| | | | | | |Q| |
|Q| | | | | | | |
| | |Q| | | | | |
| | | | | | | |Q|
| | | | | |Q| | |
| | | |Q| | | | |
| |Q| | | | | | |
| | | | |Q| | | |
Answer 82
| | | | | | |Q| |
| |Q| | | | | | |
| | | |Q| | | | |
|Q| | | | | | | |
| | | | | | | |Q|
| | | | |Q| | | |
| | |Q| | | | | |
| | | | | |Q| | |
Answer 83
| | | | | | |Q| |
| |Q| | | | | | |
| | | | | |Q| | |
| | |Q| | | | | |
|Q| | | | | | | |
| | | |Q| | | | |
| | | | | | | |Q|
| | | | |Q| | | |
Answer 84
| | | | | | |Q| |
| | |Q| | | | | |
|Q| | | | | | | |
| | | | | |Q| | |
| | | | | | | |Q|
| | | | |Q| | | |
| |Q| | | | | | |
| | | |Q| | | | |
Answer 85
| | | | | | |Q| |
| | |Q| | | | | |
| | | | | | | |Q|
| |Q| | | | | | |
| | | | |Q| | | |
|Q| | | | | | | |
| | | | | |Q| | |
| | | |Q| | | | |
Answer 86
| | | | | | |Q| |
| | | |Q| | | | |
| |Q| | | | | | |
| | | | |Q| | | |
| | | | | | | |Q|
|Q| | | | | | | |
| | |Q| | | | | |
| | | | | |Q| | |
Answer 87
| | | | | | |Q| |
| | | |Q| | | | |
| |Q| | | | | | |
| | | | | | | |Q|
| | | | | |Q| | |
|Q| | | | | | | |
| | |Q| | | | | |
| | | | |Q| | | |
Answer 88
| | | | | | |Q| |
| | | | |Q| | | |
| | |Q| | | | | |
|Q| | | | | | | |
| | | | | |Q| | |
| | | | | | | |Q|
| |Q| | | | | | |
| | | |Q| | | | |
Answer 89
| | | | | | | |Q|
| |Q| | | | | | |
| | | |Q| | | | |
|Q| | | | | | | |
| | | | | | |Q| |
| | | | |Q| | | |
| | |Q| | | | | |
| | | | | |Q| | |
Answer 90
| | | | | | | |Q|
| |Q| | | | | | |
| | | | |Q| | | |
| | |Q| | | | | |
|Q| | | | | | | |
| | | | | | |Q| |
| | | |Q| | | | |
| | | | | |Q| | |
Answer 91
| | | | | | | |Q|
| | |Q| | | | | |
|Q| | | | | | | |
| | | | | |Q| | |
| |Q| | | | | | |
| | | | |Q| | | |
| | | | | | |Q| |
| | | |Q| | | | |
Answer 92
| | | | | | | |Q|
| | | |Q| | | | |
|Q| | | | | | | |
| | |Q| | | | | |
| | | | | |Q| | |
| |Q| | | | | | |
| | | | | | |Q| |
| | | | |Q| | | |
学习心得
为了解决八皇后问题特地研究了一下回溯法,希望能够在以后学习中再多加运用。
题目来自《JAVA语言程序设计》P230-6.20***