八皇后问题
public class EightQueen {
public static int num=1;
public void Queen(int queenNum)
{
String queenLocation[][]=new String[queenNum][queenNum];
//init(queenLocation);
int c[]=new int[queenNum];
advance(0, queenNum, c, queenLocation);
}
private void advance(int k,int queenNum ,int c[],String queenLocation[][])
{
for(int col=0;col<queenNum;col++)
{
c[k]=col;
if(isSafe(c, k))
{
if(k==queenNum-1)
{
init(queenLocation);
for(int i=0;i<queenNum;i++)//填充棋盘
{
queenLocation[i][c[i]]="Q";
}
printQueen(queenLocation, num++);//打印出当前的可行方案
}else
{
advance(k+1,queenNum,c,queenLocation);
}
}
}
}
private boolean isSafe(int c[],int currentQueenNum)
{
//当前是第几个皇后,当前和皇后依次和前面的皇后比较
//currentQueenNum表示当前是第几个皇后
if(currentQueenNum==0)
return true;
else
{
for(int i=0;i<currentQueenNum;i++)
{
if(c[i]==c[currentQueenNum]||(c[i]-c[currentQueenNum])==(i-currentQueenNum)||(c[i]-c[currentQueenNum])==(currentQueenNum-i))
return false;
}
return true;
}
}
/**
* 对棋盘的初始化
* @param queenLocation
*/
private void init(String [][]queenLocation)
{
int n=queenLocation.length;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
queenLocation[i][j]="x";
}
}
}
/**
*打印棋盘
* @param queenLocation
* @param num
*/
private void printQueen(String [][]queenLocation ,int num)
{
int n=queenLocation.length;
String queenString="";
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(j==(n-1)){
queenString+=queenLocation[i][j]+"\n";
}
else{
queenString+=queenLocation[i][j]+" ";
}
}
}
System.out.println("第"+num+"种解决方案:");
System.out.println(queenString);
}
public static void main(String []args)
{
EightQueen queen=new EightQueen();
int queenNumber=8;//皇后数量
queen.Queen(queenNumber);
System.out.println("总共有"+(num-1)+"种解决方案");
}
}
2、 1(1).根据变量如人际关系、成绩、游戏时间、目标从学生集中选出C个比较合适的样本作为初始聚类中心。
(2)、用前C个样本作为初始聚类中心。
(3)、将全部样本随机地分成C类,计算每类的样本均值,将样本均值作为初始聚类中心。
2、(1)按就近原则将样本归入各聚类中心所代表的类中。
(2)、取一样本,将其归入与其最近的聚类中心的那一类中,重新计算样本均值,更新聚类中心。然后取下一样本,重复操作,直至所有样本归入相应类中。
3、采用误差平方和准则函数判断聚类是否合理,不合理则修改分类。循环进行判断、修改直至达到算法终止条件。
如果通过对学生进行分类能提高教育水平,那自然是同意的拉,但若会引起对学生的不平等对待,希望不会造成这样的结果
本人应该属于迷茫无目标型