摘要:
题目大意:给出一个矩阵,每个格子有不同的消耗,给出起点和终点,求从起点走到终点要求消耗最小的路径。例如:思路:其实就是求矩阵的最短路径。也就是dijkstra算法,实现方法有很多,可以用一个矩阵记录每个点到起点的消耗(初始化为无穷大),搜索,若有更小的则更新;再一种是直接用优先队列来求,这保证了每一步都是最优的,时间复杂度和空间复杂度都比上一种方法更优,下面代码便是用这种方法。PS:关于最短路径算法dijkstra,最关键的理解我认为是从起点开始,直接相连的初始化为各自路径大小,其他的为无穷大,下一步就选最小的那个,同时更新其它的点到起点的路径大小。 1 #include <iostre 阅读全文
摘要:
因为矩阵很小,简单的深搜。。可是。。有一点不明白,当我的chage数组为change[]={-2,1,-1,2,1,2,2,1,2,-1,1,-2,-1,-2,-2,-1}的时候就会TLE,深搜的方向不同时间差别这么大吗?这个时间复杂度怎么分析? 诚心请教各位大牛为小弟指点迷津。。。 1 #include<iostream> 2 #include<memory.h> 3 using namespace std; 4 5 bool visited[5][6]; 6 int road[30]; 7 int change[]={-1,-2,-2,-1,-2,1,-1,2,1, 阅读全文
摘要:
数据量是8*8的了,要做个优化,尽量往分支少的方向搜马周游的问题,很经典的深搜。以后自己当做模版思路吧 1 #include<iostream> 2 #include<memory.h> 3 #include<vector> 4 #include<algorithm> 5 using namespace std; 6 7 int road[64]; 8 bool vis[8][8]; 9 int change[]={-2,1,-1,2,1,2,2,1,2,-1,1,-2,-1,-2,-2,-1};10 11 struct Node12 {13 i 阅读全文