第一次实验--NPC问题(回溯算法、聚类分析)

来源:互联网 发布:黑塞矩阵 编辑:程序博客网 时间:2024/05/02 00:46
<pre name="code" class="java">package test;import java.util.ArrayList;public class core1 {/* * 原:范家诚 * */static int lie = 8;static int hang = 8;static int queen_size = 8;static int list[] = new int[hang];  //某一行的情况static int position[] = new int[]{-1,-1,-1,-1,-1,-1,-1,-1};   //记录每一个皇后的位置,初值为-1static ArrayList<String> result = new ArrayList<String>();//第几个皇后移动public static boolean queen_move(int queen_point){position[queen_point]++;System.out.println("queen:"+queen_point+"尝试位置"+position[queen_point]);//看看位置是否安全,不安全继续下一个if(!isSafe(queen_point)){//如果大于列数,则表明已经是死角了if(position[queen_point]>=lie){position[queen_point] = -1;System.out.println("死角");return false;}//继续下一个if(queen_move(queen_point)){return true;}else{return false;}}return true;}//判断位置是否安全public static boolean isSafe(int queen_point){//查看前面的皇后在那个位置for(int index=0;index<queen_point;index++){//判断是否与上面的列一样if(position[index]==position[queen_point]){return false;}//判断是否在上面的米字范围int left = position[index] - (queen_point-index);int right = position[index] + (queen_point-index);if(left>=lie){}else{if(left==position[queen_point]){return false;}}if(right<0){}else{if(right==position[queen_point]){return false;}}if(position[queen_point]>=lie||position[queen_point]<0){return false;}}return true;}static public void main(String []args){int point = 0;while(true){//皇后移动,成功后,下一个皇后移动if(queen_move(point)){point = point+1;String te = "";for(int i=0;i<position.length;i++){te = te + position[i];}System.out.println("目前皇后位置"+te);}else{System.out.println("当前point="+point);position[point] = -1;point = point-1;System.out.println("回溯point="+point);}//如果point的值大于等于8,说明成立if(point>=8){//算出一次结果if(position[0]>=hang){System.out.println("已经没有结果了");break;}else{String s = show(position);result.add(s);point = point - 1;}//break;}if(point<0){System.out.println("无解");break;}}System.out.println("皇后位置");for(int index=0;index<3;index++){System.out.println("_______________________________");System.out.println(result.get(index).toString());System.out.println("_______________________________");}}public static String show(int []p){StringBuffer s = new StringBuffer();for(int i=0;i<p.length;i++){for(int j=0;j<p.length;j++){if(j == p[i]){s.append("Q");}else{s.append("X");}}s.append("\n");}return s.toString();}}


 

 

 


(2)学生聚类分析思考(PPT,PDF)

    为了实现因材施教的目标,现教务处计划对学生进行摸底并分类,假如使用K均值聚类算法,并且认为学生大概可以分为四类,分别为“积极主动型”、“学霸型”、“游戏人生型”、“迷茫无目标型”。现在你是该项目的负责人,(1)请设计一个较为完整的项目实施方案;(2)你是否认可对学生进行分类?(3)按照你给定的实施方案与需要测量的要素(如天学习时间),请尝试按照自身情况对其进行回答,以及对自身的评价与定位和努力目标。

答:根据K均值聚类算法,我们可以根据学生的学习时间,娱乐时间(包含打机和其他体育活动),做事是否积极,是否有目标,性格等测量因素对学生进行分类。

(2)其实我觉得可以分类,但是分类会不明确,有些人玩游戏学习也很好,也很积极主动

(3)根据自己的给定的实施方案:

 学习时间:每天3-4个小时

娱乐时间:2个小时左右

我从大一开始就很积极努力,编码能力也自认OK。性格开朗,善于和同学交流。一开始希望在计算机领域上多研究,然后去工作两年,然后就去创业。但是,计划总没有变化快,我遇到了一些人生的瓶颈,我想去突破,所以将来,我不一定从事IT行业。

个人的目标:

学会做人,学会做事,学会思考。
0 0
原创粉丝点击