第1次实验——NPC问题(回溯算法、聚类分析)

本文首先介绍了经典的八皇后问题,通过回溯算法来寻找解决方案,接着探讨了如何将问题扩展到N皇后问题。随后转向学生聚类分析,提出了一种基于K均值的分类方案,设计了详细的调查问卷,以实现因材施教的目标,并分享了作者的问卷答案和自我评估。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)八皇后及N皇后问题

       八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种方法可以解决此问题。

      请编程实现八皇后问题,并把92种解的前三种解输出到屏幕(8*8的二维矩阵,Q代表皇后,X代表空)。并把此问题的求解过程延伸到N皇后问题

       程序代码如下所示:

package 算法;

public class EightQueen {  
    private int index = 1;  
    private final static int SCALE = 8;  
    private int[] answer = new int[SCALE];  
  
    private void initArray() {  
        for (int i = 0; i < answer.length; i++) {  
            answer[i] = -1;  
        }  
    }  
  
    private boolean canStay(int row, int col) {  
        for (int i = 0; i < row; i++) 
        {  
            if (answer[i] == col  || Math.abs(row - i) == Math.abs(col - answer[i])) 
            {  
                return false;  
            }  
        }  
        return true;  
    }  
  
    private void calculate() {  
        for (int row = 0; row < SCALE; row++) 
        {  
            if (answer[row] == -1) 
            {  
                answer[row] = 0;  
            }  
  
            for (int col = answer[row]; col <= SCALE; col++) 
            {  
                if (col == SCALE) 
                {  
                    answer[row] = -1;  
                    row--;  
                    if (row < 0) 
                    {  
                        return;  
                    }  
                    col = answer[row];  
                    continue;  
                }  
  
                if (canStay(row, col)) 
                {  
                    answer[row] = col;   
                    if (row == SCALE - 1) 
                    {  
                        showMsg();  
                        continue;  
                    }  
                    break;  
                }  
            }  
        }  
    }  
  
    private void showMsg() {  
    	if (index<4)
    	{
    		System.out.println(" - 第" + index + "种方案 -");  
    		for (int i = 0; i < answer.length; i++) 
    		{  
    			for (int j = 0; j < SCALE; j++) 
    			{  
    				if (answer[i] == j) 
    				{  
    					System.out.print("Q ");  
    					} else {  
    						System.out.print("X ");  
    						}  
    				}  
    			System.out.println("");  
    			}  
    		System.out.println("\n");  
    		index++;  
    		}  
    	}
  
    public EightQueen() {  
        initArray();  
        calculate();  
    }  
  
    public static void main(String[] args) {  
    	System.out.println("列举"+SCALE+"皇后问题的前 3 种方案!");
    	System.out.println();
        EightQueen eightQueen = new EightQueen();  
    }  
}

          程序运行结果如下所示:



2)学生聚类分析思考

      为了实现因材施教的目标,现教务处计划对学生进行摸底并分类,假如使用K均值聚类算法,并且认为学生大概可以分为四类,分别为“积极主动型”、“学霸型”、“游戏人生型”、“迷茫无目标型”。现在你是该项目的负责人,(1)请设计一个较为完整的项目实施方案;(2)你是否认可对学生进行分类?(3)按照你给定的实施方案与需要测量的要素(如天学习时间),请尝试按照自身情况对其进行回答,以及对自身的评价与定位和努力目标。

解:(1)具体项目实施方案:设计一份调查问卷表,以问卷星的形式对本校在校学生进行调查,再把结果汇集 起来进行分析和研究。问卷调查表的具体内容如下所示。         

1.您的性别( )

A. 男          B. 女

2.您所在的年级()

A.13级       B.12级      C. 11级     D.10级                     

3.除了双休日,您觉得每天平均拥有多少课余时间?()

A.少于3小时  B.3-5小时(不含5)  C.5-8小时(不含8)   D.8小时以上

4、你每周的课余时间里您都做些什么?可多选(               )

A、学习(包括读课外书)   B、睡懒觉    C、逛街、购物聚会   D、兼职或义工  

E、和同学闲聊、和同学沟通联络感情      F、打扑克、棋牌等     G、健身、运动  

H、上网   I、参加院、系组织的社团活动   J、其他

5.你每周兼职的时间为(  )

A.0-2小时   B.2-4小时   C.4-8小时    D.超出8小时

6.你每周的上网时间为(  )

A.5小时以下   B.5-10小时   C.10-15小时   D.15-20小时   E.20小时以上

7.你上网一般都在干什么? 可以多选 (              )

A.查阅资料或浏览网页    B.玩游戏或上QQ     C.看电视或听音乐    D.逛网店

8.你每周外出大约多长时间(  )

A.0-3小时    B.3小时-1天  C.1-2天  D.2天以上

9.你每周体育锻炼时间(  )

A.0-3小时   B.3小时-6小时  C.6-9小时 D.9小时以上

10.你参加社团活动的时间(  )

A. 比较频繁    B. 有时    C. 偶尔     D. 其他_______

11.你一般与朋友的交往:(  )

A. 比较频繁    B. 有时    C. 偶尔     D. 其他________

12.你每周看新闻或关心政事的时间:(  )

A.从不   B.每周一两次   C.每天一次   D.时刻关注

13.每周与家人一起的时间(包括视频、电话、见面):(  )

A.从不   B.每月一两次   C.每周一两次次   D.每天

14.如果您对现在的课余时间安排感到不满意,那原因是(最多选三项)(        )

A.课余时间太少                  B.缺乏科学的计划

C.太懒惰,没有付诸行动          D.课余生活不够丰富

E.社团工作占据太多时间          F.自制力不强,容易被诱惑

G.其它              

15. 您认为现在课余时间的利用给您带来的影响主要是什么(最多选四项)(         )

A.生活井然有序,活得充实而快乐

B.学业上大有进步,掌握了更多的知识技能,开阔了眼界

C.结识了更多的朋友,增进了朋友情谊

D.个人工作能力得到迅速提升

E做兼职增加了社会经验也增加了经济来源

F.经常迷茫,无所事事

G.经常上网,花费了金钱和时间

16. 您认为通过什么方法帮助自己合理安排课余时间最有效?()

A.自己制定时间安排表并严格执行          B.向师长讨教经验

C.跟同门朋友交流,互相监督              D.跟父母反映并寻求父母的帮助

E其他                   

 

(2)我认为可以对学生进行分类,这样可以大概确定每个学生所属的类型,有助于学生对自己的认识。

(3)对于上面这份问卷:我的答案是

1.您的性别 (A

A.男          B. 女

2.您所在的年级( C

A.13级        B.12级      C. 11级     D.10级                     

3.除了双休日,您觉得每天平均拥有多少课余时间?( D

A.少于3小时   B.3-5小时(不含5)  C.5-8小时(不含8)  D.8小时以上

4、你每周的课余时间里您都做些什么?可多选(    AEGHJ           )

A、学习(包括读课外书)   B、睡懒觉    C、逛街、购物聚会   D、兼职或义工  

E、和同学闲聊、和同学沟通联络感情      F、打扑克、棋牌等     G、健身、运动  

H、上网  I、参加院、系组织的社团活动  J、其他

5.你每周兼职的时间为( A

A.0-2小时    B.2-4小时    C.4-8小时     D.超出8小时

6.你每周的上网时间为( D

A.5小时以下  B.5-10小时  C.10-15小时  D.15-20小时  E.20小时以上

7.你上网一般都在干什么? 可以多选 (      ABC        )

A.查阅资料或浏览网页    B.玩游戏或上QQ     C.看电视或听音乐    D.逛网店

8.你每周外出大约多长时间(

A.0-3小时   B.3小时-1天   C.1-2天   D.2天以上

9.你每周体育锻炼时间( B

A.0-3小时  B.3小时-6小时   C.6-9小时  D.9小时以上

10.你参加社团活动的时间( C

A.比较频繁    B. 有时    C. 偶尔     D. 其他_______

11.你一般与朋友的交往:( A

A.比较频繁    B. 有时    C. 偶尔     D. 其他________

12.你每周看新闻或关心政事的时间:(C  )

A.从不  B.每周一两次  C.每天一次  D.时刻关注

13.每周与家人一起的时间(包括视频、电话、见面):( D

A.从不  B.每月一两次  C.每周一两次次  D.每天

14.如果您对现在的课余时间安排感到不满意,那原因是(最多选三项)(   ABD     )

A.课余时间太少                  B.缺乏科学的计划

C.太懒惰,没有付诸行动          D.课余生活不够丰富

E.社团工作占据太多时间          F.自制力不强,容易被诱惑

G.其它              

15.您认为现在课余时间的利用给您带来的影响主要是什么(最多选四项)(  ABC       )

A.生活井然有序,活得充实而快乐

B.学业上大有进步,掌握了更多的知识技能,开阔了眼界

C.结识了更多的朋友,增进了朋友情谊

D.个人工作能力得到迅速提升

E做兼职增加了社会经验也增加了经济来源

F.经常迷茫,无所事事

G.经常上网,花费了金钱和时间

16.您认为通过什么方法帮助自己合理安排课余时间最有效?(C

A.自己制定时间安排表并严格执行          B.向师长讨教经验

C.跟同门朋友交流,互相监督              D.跟父母反映并寻求父母的帮助

E其他                    


通过填写这份问卷,我给自己定位是“积极主动型”,我觉得我还是能够掌握好自己的空余时间,不沉溺于某种东西(比如说游戏)上面,不足之处是不能平衡学习和娱乐的时间,学习的力度还不够,所以以后会多注意这一点,在学习上多下点功夫。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值