一:回溯问题,八皇后问题。
#include "iostream"
#define max 100
using namespace std;
bool unguarded(int A[],int m)
{
int n;
for(n=0;n<m;n++)
{
if((A[n]==A[m])||((A[n]+n)==(A[m]+m))||((A[n]-n)==(A[m]-m))||((n -A[n])==(m-A[m])))
return false;
}
return true;
}
int main()
{
int n,i,A[max],s=1;
cout<<"请输入皇后的个数"<<endl;
cin>>n;
if((n<=3)||(n>=100))
cout<<"请不要输入1、2、3或者大于100的数!"<<endl;//一个没有意义,两个和三个不管怎么放都会在同一行和同一列
else
{
for(i=0;i<n;i++) A[i]=0;//先把每个皇后放在第一列,然后按行检察
i=0;//然后从第零行开始
while(i>=0) //回溯结束的条件
{
if(A[i]<=n-1) //当前行数的前边的每一行都要检查,从第零列检查到第n-1列
{//检测A[i]与A[0]~A[i-1]是否有冲突
if(!unguarded(A,i)) A[i]++;//设防,继续往下一列走
else
{
if(i<n-1) i++;//当i行不是最后一行的时候
else //是最后一行的话输出皇后的摆放方式
{
cout<<"第"<<s<<"个:"<<endl;
for(int j=0;j<n;j++)
{
for(int d=0;d<n;d++){
if(d!=A[j])
cout<<'+'<<' ';
else
cout<<'@'<<' ';
}
cout<<endl;
}
s+=1;//记录已近有几种摆放方式
if(s>3)
{
break;
}
else{
A[n-1]++;//继续向右走
}
}
}
}
else {//当某一行全检查完了还是没有皇后的位置,就得返回到前一行去,即回溯
A[i]=0; i--;//行数减一
if(i>=0) A[i]++;}//向后挪一个把前一行的皇后
}
}
return 0;
}
二:聚类分析
1 设计问卷。调查每个学生每天的学习时间,玩游戏时间睡觉时间以及体育运动时间,调查学生每周参加各种活动的次数,还有学生的是否有短期和长期的目标。
2 对学生分类可以使学生更好的认识自己,看到自己的优缺点,给学生的发展提供帮助。
3 我属于迷茫无目标型。不知道自己的优缺点,不知道自己喜欢什么。我要尽快制定自己的目标,然后朝着目标努力