第1次实验——NPC问题(回溯算法、聚类分析)
来源:互联网 发布:js中的九九乘法表 编辑:程序博客网 时间:2024/06/07 00:42
(1)八皇后及N皇后问题
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种方法可以解决此问题。
请编程实现八皇后问题,并把92种解的前三种解输出到屏幕(8*8的二维矩阵,Q代表皇后,X代表空)。并把此问题的求解过程延伸到N皇后问题。
import java.util.Scanner;public class NQueen{ public static int queensnumber; // 皇后数 public static int num; // 方案数量 public static int []x = new int[20]; public static void main(String[] args) { // TODO Auto-generated method stub NQueen queen = new NQueen(); System.out.println("Input the number of Queens"); Scanner s = new Scanner(System.in); while (s.hasNext()) { String line = s.nextLine(); String[] sArray = line.split(" "); queensnumber = Integer.parseInt(sArray[0]); if (queensnumber == -1) return; else { //System.out.println(queen.n); for (int i = 0; i <= queensnumber; i++) { queen.x[i] = 0; } queen.Backtrack(1); } } } public boolean Place(int i) // 行 { if (i > queensnumber) { return false; } else { for (int j = 1; j < i; j++) // x[]是列,i,j是行 { if ((Math.abs(j - i) == Math.abs(x[i] - x[j]) || (x[i] == x[j]))) // 只要有一个不行就返回false { return false; } } } return true; } private int Backtrack(int i) // 行 { if (i > queensnumber) { num++; print(); } else { for (int j = 1; j <= queensnumber; j++) // 列 { x[i] = j; if (Place(i)) // 行 { Backtrack(i + 1); // 行 } } } return num; } public static void print() { if (num >= 4) // 打印前三中方案 { return; } else { System.out.println("第" + num + "种摆法 "); for (int i = 0; i < queensnumber; i++) { for (int j = 0; j < queensnumber; j++) { if (i == x[j]) { System.out.print("Q "); } else System.out.print("X "); } System.out.println(" "); } } } }
2.学生聚类分析思考
学生大概可以分为四类,分别为“积极主动型”、“学霸型”、“游戏人生型”、“迷茫无目标型”。
首先本次通过几个变量来对学生进行分类:
1)课余学习时间 int整形变量
2)课余玩游戏时间 int整形变量
3)课余参加社团活动时间 int整形变量
4)是否有目标 boolean布尔变量
5)参与比赛次数 int整形变量
学生每天的8:10~11:50、14:30~17:55上课,13:00~14:00、23:30~07:00休息,除去吃饭等杂碎的事情,剩余的可调配时间大概5.5个小时~6个小时
①积极主动型:
平均课余学习时间≥2.5个小时
平均课余游戏时间≤30分钟
平均课余参加社团活动时间≥1.5小时
有自己的奋斗目标
平均每学期参与比赛次数≥1次
②学霸型
平均课余学习时间≥4个小时
平均课余游戏时间≤30分钟
平均课余参加社团活动时间≤0.5小时
有自己的奋斗目标
平均每学期参与比赛次数≤1次
③游戏人生型
平均课余学习时间≤0.5个小时
平均课余游戏时间≥3.5小时
平均课余参加社团活动时间≤0.5小时
无自己的奋斗目标
平均每学期参与比赛次数0次
④迷茫无目标型
平均课余学习时间≤2个小时 && ≥1小时
平均课余游戏时间≤2小时 && ≥1小时
平均课余参加社团活动时间≤1小时
无自己的奋斗目标
平均每学期参与比赛次数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问题(回溯算法、聚类分析)
- Unity3D 脚本架构
- Spark & Shark & Tachyon 简介
- Android中Parcel的分析以及使用
- Android ListView中嵌入Button/CheckBox后Item点击无效问题解决
- 21Extjs笔记
- 第1次实验——NPC问题(回溯算法、聚类分析)
- 赵雅智_ListView_OnScrollListener
- 网站排名查询
- 建站之新手入门
- FLUME日志收集
- c++设计模式之简单工厂
- 特别策划:解读更难就业季
- 莫比乌斯函数
- erlang程序优化点