第1次实验——NPC问题(回溯算法、聚类分析)
来源:互联网 发布:淘宝上日本代购哪家好 编辑:程序博客网 时间:2024/06/06 16:39
(1)八皇后及N皇后问题
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种方法可以解决此问题。
请编程实现八皇后问题,并把92种解的前三种解输出到屏幕(8*8的二维矩阵,Q代表皇后,X代表空)。并把此问题的求解过程延伸到N皇后问题。
思路:采用回溯思想,遍历所有行,从矩阵的第一行第一列开始查找可以放置皇后的安全位置,若找到安全位置则往下一行查找安全位置,直至遍历结束。若当前行的所有列均不安全,则回溯到上一行,从上一行的下一列再继续查找。。。
输出的解以8皇后问题为例,N皇后问题只需修改皇后的数量。用java实现,代码如下:
/** * N皇后问题 */public class Queens { int num ; // 皇后数量 int [] queenArray ; // 存储可行方案的皇后们的位置 int count = 0; // 解决方案的数量 /** * 初始化 * @param num 皇后的数量 */ public Queens(int num){ this.num = num; queenArray = new int[num]; } /** * 判断当前行放置了皇后是否会与前面几行放置的皇后们发生冲突 * @param row * @return */ public boolean isSafe(int row){ for(int r=0; r<row; r++){ // 发生冲突的条件:皇后们在同一行(此处不用判断是否同一行)、同一列、 if(queenArray[row] == queenArray[r] || // 同一对角线(斜率=(y2-y1)/(x2-x1)= +1或-1 ) Math.abs(queenArray[row]-queenArray[r]) == Math.abs(row-r)) return false; } return true; } /** * 回溯查找解决n皇后问题的方案 * @param row 第几行 */ public void backTrack(int row){ // 找到一个放置所有皇后而不发生冲突的方案,打印出来 if(row == num){ count++; print(); return; } // 未遍历到最后一行,查找当前行的某个适合放置皇后的列 for(int col = 0; col < num; col++) { queenArray[row] = col; //当前行的某个列适合放置皇后,往下一行查找 if(isSafe(row)) backTrack(row+1); } } public void print(){ System.out.println("方案 "+count+":"); for(int i=0; i<num; i++){ for(int j=0; j<num; j++){ if(j == queenArray[i]) System.out.print("Q "); else System.out.print("X "); } System.out.println(); } System.out.println("\n"); } public static void main(String[] args) { Queens queens = new Queens(8); queens.backTrack(0); }}
运行结果:
(2)学生聚类分析思考(PPT,PDF)
为了实现因材施教的目标,现教务处计划对学生进行摸底并分类,假如使用K均值聚类算法,并且认为学生大概可以分为四类,分别为“积极主动型”、“学霸型”、“游戏人生型”、“迷茫无目标型”。现在你是该项目的负责人,(1)请设计一个较为完整的项目实施方案;(2)你是否认可对学生进行分类?(3)按照你给定的实施方案与需要测量的要素(如天学习时间),请尝试按照自身情况对其进行回答,以及对自身的评价与定位和努力目标。
解:答案请见试卷。。。
0 0
- 第1次实验 - NPC问题(回溯算法、聚类分析)
- 第1次实验 - NPC问题(回溯算法、聚类分析)
- 第1次实验--NPC问题(回溯算法、聚类分析)
- 第1次实验——NPC问题(回溯算法、聚类分析) N皇后的问题
- 第1次实验——NPC问题(回溯算法、聚类分析)
- 第1次实验——NPC问题(回溯算法、聚类分析)
- 第1次实验——NPC问题(回溯算法、聚类分析)
- 第1次实验——NPC问题(回溯算法、聚类分析)
- 第1次实验——NPC问题(回溯算法、聚类分析)
- 第1次实验——NPC问题(回溯算法、聚类分析)
- 第1次实验——NPC问题(回溯算法、聚类分析)
- 第1次实验——NPC问题(回溯算法、聚类分析)
- 第1次实验——NPC问题(回溯算法、聚类分析)
- 第1次实验——NPC问题(回溯算法、聚类分析)
- 第1次实验——NPC问题(回溯算法、聚类分析)
- 第1次实验——NPC问题(回溯算法、聚类分析)
- 第1次实验——NPC问题(回溯算法、聚类分析)
- 第1次实验——NPC问题(回溯算法、聚类分析)
- C++ Primer 笔记一(类型、常量)
- WinRAR v5.10 正式版
- 调试细节 !!! 很重要奥!
- weka[3] - J48(二)
- android cmd adb命令安装和删除apk应用
- 第1次实验——NPC问题(回溯算法、聚类分析)
- 第一次实验:NPC,回溯,八皇后问题
- WEB程序会话管理--HttpSession和Cookie
- 重载Comparator
- 门面模式 (Facade)
- 二分查找(Scheme)
- SQL笔记--第二章
- jsp连接数据库大全
- linux shell 知识点及问题总结