(1)八皇后及N皇后问题
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种方法可以解决此问题。
源代码如下:
package 算法;
public class EightQueen {
private int index = 1;
private final static int SCALE = 8;
private int[] answer = new int[SCALE];
private void initArray() {
for (int i = 0; i < answer.length; i++) {
answer[i] = -1;
}
}
private boolean canStay(int row, int col) {
for (int i = 0; i < row; i++)
{
if (answer[i] == col || Math.abs(row - i) == Math.abs(col - answer[i]))
{
return false;
}
}
return true;
}
private void calculate() {
for (int row = 0; row < SCALE; row++)
{
if (answer[row] == -1)
{
answer[row] = 0;
}
for (int col = answer[row]; col <= SCALE; col++)
{
if (col == SCALE)
{
answer[row] = -1;
row--;
if (row < 0)
{
return;
}
col = answer[row];
continue;
}
if (canStay(row, col))
{
answer[row] = col;
if (row == SCALE - 1)
{
showMsg();
continue;
}
break;
}
}
}
}
private void showMsg() {
if (index<4)
{
System.out.println(" - 第" + index + "种方案 -");
for (int i = 0; i < answer.length; i++)
{
for (int j = 0; j < SCALE; j++)
{
if (answer[i] == j)
{
System.out.print("Q ");
} else {
System.out.print("X ");
}
}
System.out.println("");
}
System.out.println("\n");
index++;
}
}
public EightQueen() {
initArray();
calculate();
}
public static void main(String[] args) {
System.out.println("列举"+SCALE+"皇后问题的前 3 种方案!");
System.out.println();
EightQueen eightQueen = new EightQueen();
}
}
具体实施方案:
在教学系统上以类似教学评估的方式让每个同学上填写以下问卷
1、所属 计算机科学与技术
2、每周课时 16
3、性别( A) A、男 B、女
4、您是否喜欢现在所学专业?(A ) A、是 B、一般 C、否
5 你自己有明确的目标吗(自己将来要做什)?A
A 有 B 没有
6 你每天平均学习时间是?B
A 1小时以下 B 1~4小时 C 4~8小时 D 8小时以上
7、您是否参加学校开展的各种学校社团和活动赛程?(B ) A、是 B、否
8、你是否参加培训班?( A)参加何种培训班?( )[可多选]
A、否 B、会计 C、计算机 D、公务员
E、四.六级 F、考研 G、其他
9.您是否经常上网,使用网络主要做什么?(C )
A、否 B、玩游戏 C、聊天 D、看电影或电视节目 E 、用于学习
10、您觉得您平时时间够用吗?( A) A、足够 B、不够 C、没感觉
11、您是否有浪费时间的感觉?( A) A、是 B、否
12、您是否有对课余时间进行利用的计划?( B) A、是 B、否
13、您的课余时间更多用于学习?( D) A考证书 B知识拓展 C职业素质培养 D考研
14、周末的课余时间主要是怎么利用?( B)
A、兼职打工 B、自主学习 C、休闲娱乐 D、漫无目的
15、您对现状是否感到满意?( B) A、很满意 B、基本满意 C、不满意 D、无所谓
16、 您希望改变现状的时间安排状况吗?( A) A、迫切希望 B、无所谓 C、不希望
17.您利用课余时间的根据是什么?(D )
A、毫无根据,想到做什么就做什么 B、受周围同学影响
C、兴趣爱好 D、要实现的目标
18.什么原因对你课余时间安排造成的不良影响比较大?( B) [可多选]
A、学校作业太多,自主时间太少 B、时间安排合理,过的充实
C、兼职时间占得太多 D、毫无计划,没有目的 E、娱乐时间太多
我认为可以对学生进行分类 我的回答如上填写