笔记
打开秋天的内核
自学者
展开
-
2020-12-10
在C++和Python之间切换 有一段时间没有使用Python,要练练手。 关于八数码问题的A算法,网上有很多,基本拜读了,受益匪浅。之前觉得用A算法不能肯定能够获得最短途径。但仔细分析发现,其实很多的A*算法与Dijkstra算法基本一致,就此确定能够获得最短路径,至于原因,读者可自行百度Dijkstra算法。大致的思路如下。 1、判断是否有解,无解直接退出,有解进入步骤。 2、建立Open和Close两个数组,Open初始化放入source(包括步长为0,曼哈顿距离,source,父状态(为空))。 3原创 2020-12-10 12:07:40 · 111 阅读 · 1 评论 -
2020-12-05
goto语句是一把双刃剑 在很多文章里,都说最好不要用goto语句,但既然C++有,就一定有它的用武之地。 八数码问题的最终解决,可能还是要用双向宽搜,办法虽然笨,但获得最短路径肯定是妥妥的。网上一些八数码程序都只报了搜索层次,但具体路径没有。原因是节省内存开销,极大提高运算速度,但没有过程总是遗憾,自己补上。测试了一下,不算完美(后续再改进),但比起python,速度还是要快很多。 不啰嗦,直接上代码。 #include<iostream> #include <string.h>原创 2020-12-05 21:43:07 · 141 阅读 · 0 评论 -
2020-12-04
C++的第一个类——数据结构带来的美 试尝着用C++写了一些程序,但类的结构和使用一直是困惑我的。当设置一个set容器,往里面添加类对象时,问题来了,除了第一数据,其它是存不进的。在网上学习后,发现要重载小于(<)运算符,找了一些例子,终于试验成功,在八数码编程中试验了一把,还是很给力的,看看吧。 #include<iostream> #include<set> #include<deque> #include<time.h> using namespa原创 2020-12-04 20:04:53 · 111 阅读 · 0 评论 -
2020-11-28
不介意用C++再写一遍(二) 参考不介意用C++再写一遍(一) 在验证从一种状态变化到另一种状态最多须要多少搜索多少层的时候,初步得到的结论是不超过30层,但验证起来很复杂,时间很长。因此须要一个运算比较快的程序。 从网上找了许多程序,发现有一个程序解答速度很快,就把这个程序修改了,特此感谢AcceptedLee,链接如下:AcceptedLee的博客 主要思路:计算012345678所有组合对目标状态(target)的搜索层次(剔除无解状态),找出那些搜索层次达到或超过30的状态(source),搜索方法原创 2020-11-28 18:41:50 · 180 阅读 · 0 评论 -
2020-11-27
不介意用C++再写一遍(一) 八数码问题研究有一段时间了,但总感觉速度太慢,验证起来不爽,所以把多年前学的C++再温习了一遍。先写一个简单的(单向宽搜)看看成效。 #include<iostream> #include<set> #include<time.h> using namespace std; set<string> sun; set<string> sum; set<string> summ; //'0'从某个位置移到到另外原创 2020-11-27 21:48:10 · 148 阅读 · 0 评论