摘要: 先简要解释一下从任何一个状态到目标状态的移动步数不可能小于所有数字当前位置与目标位置的曼哈顿距离之和 考虑一次移动,只能让一个数字的曼哈顿距离加一或者减一,而目标状态所有数字的曼哈顿距离都是0,所以得证 我们可以用普通的BFS做这道题目,由于边权是1,所以第一次搜索到的时候一定是最优情况 考虑用A* 阅读全文
posted @ 2023-11-23 16:53 最爱丁珰 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 首先证明那个比较显然的推论 我们先证明一下一个小引理:搜索树边权(也是后继的代价减去前驱的代价)非负的优先队列BFS先出队的点一定比后出队的点的代价小或等于 用数学归纳法,假设前面已经出队的点满足以上性质,之前最后一个出队的点为\(x\),现在队列里面的队首是\(y\),那我们就是要证明\(x\)的 阅读全文
posted @ 2023-11-23 16:41 最爱丁珰 阅读(1) 评论(0) 推荐(0) 编辑
摘要: A*算法,本质是对BFS的一种优化,无论这个BFS是普通的BFS(搜索树上边权为1)还是优先队列BFS(搜索树上的边权可能大于1) 蓝书上论证正确性那一段说的\(s\)指的是目标状态的某一状态(即\(s\)已经到达了目标状态但不一定最优)然后再去理解那一段话 但是,我想说的是,中间的点第一次被取出的 阅读全文
posted @ 2023-11-23 16:14 最爱丁珰 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 如果是C语言,那么在定义了一个结构体之后,在声明这个结构体变量的时候必须要在类型前加上struct 比如 struct Student{ //声明结构体 char name[20]; //姓名 int num; //学号 float score; //成绩 }; struct Student stu 阅读全文
posted @ 2023-11-23 09:41 最爱丁珰 阅读(45) 评论(0) 推荐(0) 编辑
摘要: enum Day { SUNDAY = -1, MONDAY = 3, TUESDAY, WEDNESDAY = 2, THURSDAY, FRIDAY, SATURDAY }; 这些类型的值分别是-1,3,4,2,3,4,5 所以从一个显性赋值的变量开始一直到下一个显性赋值的变量结束,中间的变量依 阅读全文
posted @ 2023-11-23 09:33 最爱丁珰 阅读(2) 评论(0) 推荐(0) 编辑