public class Queen {
// 同栏是否有皇后,1表示有
private int[] column;
// 右上至左下是否有皇后
private int[] rup;
// 左上至右下是否有皇后
private int[] lup;
// 解答 private
int[] queen;
// 解答编号
private int num;
public Queen() {
column = new int[8 + 1];
rup = new int[2 * 8 + 1];
lup = new int[2 * 8 + 1];
for (int i = 1; i <= 8; i++)
column[i] = 1;
for (int i = 1; i <= 2 * 8; i++)
rup[i] = lup[i] = 1;
queen = new int[8 + 1];
}
public void backtrack(int i) {
if (i > 8) {
showAnswer();
} else {
for (int j = 1; j <= 8; j++) {
if (column[j] == 1 && rup[i + j] == 1 && lup[i - j + 8] == 1) {
queen[i] = j;
// 设定为占用
column[j] = rup[i + j] = lup[i - j + 8] = 0;
backtrack(i + 1);
column[j] = rup[i + j] = lup[i - j + 8] = 1;
}
}
}
}
protected void showAnswer() {
num++;
System.out.println("\n解答 " + num);
for (int y = 1; y <= 8; y++) {
for (int x = 1; x <= 8; x++) {
if (queen[y] == x) {
System.out.print(" Q");
} else {
System.out.print(" x");
}
}
System.out.println();
}
}
public static void main(String[] args) {
Queen queen = new Queen();
queen.backtrack(1);
}
}
解答 1
Q x x x x x x x
x x x x Q x x x
x x x x x x x Q
x x x x x Q x x
x x Q x x x x x
x x x x x x Q x
x Q x x x x x x
x x x Q x x x x
解答 2
Q x x x x x x x
x x x x x Q x x
x x x x x x x Q
x x Q x x x x x
x x x x x x Q x
x x x Q x x x x
x Q x x x x x x
x x x x Q x x x
解答 3
Q x x x x x x x
x x x x x x Q x
x x x Q x x x x
x x x x x Q x x
x x x x x x x Q
x Q x x x x x x
x x x x Q x x x
x x Q x x x x x
为了实现因材施教的目标,现教务处计划对学生进行摸底并分类,假如使用K均值聚类算法,并且认为学生大概可以分为四类,分别为“积极主动型”、“学霸型”、“游戏人生型”、“迷茫无目标型”。现在你是该项目的负责人,(1)请设计一个较为完整的项目实施方案;(2)你是否认可对学生进行分类?(3)按照你给定的实施方案与需要测量的要素(如天学习时间),请尝试按照自身情况对其进行回答,以及对自身的评价与定位和努力目标。
分析思路:因为我们是采用k均值聚类算法,下面就是该算法的步骤,那么我们就应该根据步骤来开展和实施。
K-means聚类算法的一般步骤:
- 初始化。输入基因表达矩阵作为对象集X,输入指定聚类类数N,并在X中随机选取N个对象作为初始聚类中心。设定迭代中止条件,比如最大循环次数或者聚类中心收敛误差容限。
- 进行迭代。根据相似度准则将数据对象分配到最接近的聚类中心,从而形成一类。初始化隶属度矩阵。
- 更新聚类中心。然后以每一类的平均向量作为新的聚类中心,重新分配数据对象。
- 反复执行第二步和第三步直至满足中止条件。
(1)具体的实施方案:1、准备工作:在我们确定开展这项活动后,首先我们要进行对象的选取形成对象集X,这里我们的对象就是学校的学生,然后我们要进行指定聚类类数N,这个就是我们将学生分成哪几种类型,以及类型的总数。之后,我们就可以从x随机抽取N个对象(学生)作为聚类的中心,设定相应的迭代中止条件。
2、进行迭代,我们开始对我们的对象进行大量的实际调查,得到相应的数据,然后根据相似度准则将数据对象分配到最接近聚类中心,从而形成一类,初始化隶属度矩阵。实际上这个做的就是将收集后的数据通过迭代的方式进行分类,达到我们对几种不同学生数据的分类。
3、更新聚类中心,然后以每一类的平均量作为新的聚类中心,重新分配数据对象。这个的好处就是通过调查统计过程中的实时数据来不断的更新我们的实施方案,可以减少统计的出错率。
4、反复进行第二第三步,达到中止条件为止。也就是我们在开展调查时,数量达到一定量(预估足够完成我们的统计工作,事先设立的,我们就可以停止调查工作。)
具体的实施过程中,我们可以调查同学的“天学习时间、天游戏时间、上课时间、去图书馆时间、参加社团活动时间、看课外书时间…………
有了上面的这种思路,我们开展这个调查的方式可以通过的方式有:网上问卷调查,实地跟踪问卷调查。为了达到每个人参与的效果我们可以把这个加到教务系统的教学评估模块,对大家进行评判。为了能够正确的理解和正确的态度来完成这个调查,前期一定要做好相关的宣传工作,否则收取不到可靠的数据资料,我们的调查将会大打折扣。
(2)如果这个分类只是作为一个调查,然后根据调查来开展教学活动的话是可以的,这对学生进行分类,并不是对学生进行369等的来进行分类和对待。但是我们也应该要有较多的注意事项,比如匿名工作,保护学生的隐私。如果将来开展活动,老师等人要抱着一种同等对待学生的眼光。因此,我们不能大肆的贴上学生类型到个人标签上,这样不利学生的发展。
(3)自身的评价:
天学习时间
1、上课时间:3小时
2、课外完成作业时间:1小时
3、去图书馆看书:2小时
娱乐时间
1、体育运动:1小时
2、看新闻、电视剧、电影:1小时
3、 玩电脑:1小时
学生工作时间
1、班级、社团学生会:1小时
生活起居时间
1、起床:0.5小时
2、吃饭:1小时
……
自我评价:总的来说,我是一个较为乐观的人,爱学习也爱娱乐,大一的时候比较有积极性,参加各种社团还有部门,在体育部也不长不短做了三年,当了一个副部长,也在班级担任过文体委员。感觉大学给我的感觉是锻炼各项能力,我觉得专业知识和书本知识固然重要,但是也要注重其他方面能力的提高,德育体美劳健全才是真正的人才,所以我也主张劳逸结合,多看书也多去外面活动活动,锻炼自己的社交能力,时间方面自己弄一个计划表便能有效提高自己的效率,可以节省时间。虽然这个做起来很难,但是我相信慢慢去尝试总是能行的。我觉得我是介乎积极主动型和游戏人生型的,我做事蛮主动,喜欢捉住机会表现自己,也爱玩。觉得玩可以让自己愉快起来,做什么事情都会有动力有激情,但是也要平衡那个度,希望以后能学习到更多方面的东西,提高自己。