public class RollBack {
private static boolean[][] data;
private static int[] answer;
private final static int MAX = 8;
private static int methodNum = 0;
private static void initData() {
data = new boolean[MAX][MAX];
answer = new int[MAX];
for (int i=0; i<data.length; i++) {
for (int j=0; j<data[i].length; j++) {
data[i][j] = false;
}
answer[i] = 0;
}
}
private static void run(int row) {
if (row == MAX) {
methodNum++;
showData();
} else {
for (int col=0; col<MAX; col++) {
if (isSafe(row, col)) {
answer[row] = col;
data[row][col] = true;
run(row+1);
data[row][col] = false;
}
}
}
}
private static boolean isSafe(int rowNum, int colNum) {
for (int row=0; row<rowNum; row++) {
if (data[row][colNum] == true) {
return false;
}
}
for (int k=0; k<MAX; k++) {
for (int j=0; j<MAX; j++) {
if (Math.abs(rowNum - k) == Math.abs(colNum - j)) {
if (data[k][j] == true) {
return false;
}
}
}
}
return true;
}
private static void showData() {
for (int i=0; i<MAX; i++) {
for (int j=0; j<MAX; j++) {
if (answer[i] == j) {
System.out.print("Q");
} else {
System.out.print("X");
}
}
System.out.println("");
}
System.out.println("");
}
public static void main(String[] args) {
initData();
run(0);
}
}
聚类算法
1.首先先做调查,收集全部学生日常的时间分配方案,然后根据学习时间占得比例进行分类。
2不应该
3学习时间