(1)八皇后及N皇后问题
部分代码来自:http://www.java3z.com/cwbwebhome/article/article5/51051.html?id=2444
package kfj;
public class Queen {
//定义两个int型变量,用于以下循环程序。
private int i,k;
private int n=0;
//列指示器
private int pointer = 1;
//解
int[] cellpos = new int[9];
public Queen() {
cellpos[pointer] = 1;
cellpos[2] = 3;
pointer = 3;
//给第二列之后的列赋一个初值1,因为默认是0,而我们约定的是从1开始.
clean(2);
while(cellpos[1] <= 8) {
/**
* 特殊点第一列,这里不写cellpos[pointer]++;
* 是因为后面的程序中已经加过了.
* 这点不是特殊点,更新时间(2010-3-15 22:06)
*/
//if(pointer == 1) {
//cellpos[pointer]++;
//pointer++;
//continue;
//}
/**
* 特殊点第八行,这里为什么还要加一个判断呢
* 也许你会问后面不是有i>8判断吗?试想一下,当倒数第二列
* 正好等于8,求完解后,回到倒数第二列,
* 并且后面的程序会使倒数第二列加1,现在还认为它多余么.
*/
if(cellpos[pointer]>8) {
pointer--;
cellpos[pointer]++;
//清理
clean(pointer);
continue;
}
/**
* 扫描
*/
for(i=cellpos[pointer]; i<=8; i++)
if(canStay(i)) break;
if(i>8) {
pointer--;
cellpos[pointer]++;
//清理
clean(pointer);
continue;
}else{
cellpos[pointer] = i;
}
if(pointer==8) {
//将解打印出来
if(n<3){
printQueen();
n=n+1;
}
pointer--;
cellpos[pointer]++;
//清理
clean(pointer);
}else{
pointer++;
}
}
}
private boolean canStay(int ci) {
//行扫描,判断同一行是否有其它皇后.
for(k=1; k<pointer; k++)
if(cellpos[k]==ci) return false;
//对角线扫描,判断对角线上是否有其它皇后.注意有两条对角线.
for(k=1; k<pointer; k++)
if((ci==cellpos[k]+(pointer-k)) ||
(ci==cellpos[k]-(pointer-k)))
return false;
return true;
}
private void clean(int pointer) {
for(k=pointer+1; k<9; k++)
cellpos[k] = 1;
}
private void printQueen() {
System.out.println("第"+(n+1)+"个棋盘分布为:");
for(k = 1; k<9; k++) {
for(int i=1;i<9;i++){
if(i==cellpos[k])
System.out.print(" "+"Q");
else
System.out.print(" "+"X");
}
System.out.println();
//System.out.print(""+cellpos[k]);
//if(k!=8)
//System.out.print(",");
}
System.out.println();
}
public static void main(String[] args) {
new Queen();
}
}
运行结果为:
(2)学生聚类分析思考
为了实现因材施教的目标,现教务处计划对学生进行摸底并分类,假如使用K均值聚类算法,并且认为学生大概可以分为四类,分别为“积极主动型”、“学霸型”、“游戏人生型”、“迷茫无目标型”。现在你是该项目的负责人,(1)请设计一个较为完整的项目实施方案;(2)你是否认可对学生进行分类?(3)按照你给定的实施方案与需要测量的要素(如天学习时间),请尝试按照自身情况对其进行回答,以及对自身的评价与定位和努力目标。
我的意见:(1)我认为需要对以下的要素进行分类:课后学习时间,游戏时间,是否进行课外学习,课外学习的数量,学习成绩,他人看法。实施的方案:测试的数据来源为:学校记录的成绩,对学生的问卷调查(调查问卷分为对本人的调查(课后学习时间,游戏时间,是否进行课外学习,课外学习的数量),对他人的的感觉(课后学习时间,游戏时间,是否进行课外学习,是否主动学习));(2)我对学生进行分类持不认可意见,理由:采集数据困难,数据的真实性无法确认 ;(3)我对自己的定位认:我是“迷茫无目标型”。