07 2021 档案

摘要:一、无论Floyd还是Dijkstra,算法的假设前提就是,没有负权边。 但是Bellman-Ford算法可以: if( dis[v[i]] > dis[u[i]] + w[i]) dis[v[i]] = dis[u[i]] + w[i]; u[i], v[i], w[i] 分别记录一条边的起点,终 阅读全文
posted @ 2021-07-30 21:20 雅丽梅 阅读(240) 评论(0) 推荐(0)
摘要:一、简介: Dijkstra算法:指定一个点(源点),求其到其他点的最短路径。称之为“单源最短路径”. 一维数组 dis 记录源点到其余各点的初始距离: 1.先找到一个距离源点A最近的点B,(区别于上一节的假设:求两点之间的最短距离,必须引入另外的点),因为边最小,其他边都是正数,即使引入其他点也不 阅读全文
posted @ 2021-07-30 18:36 雅丽梅 阅读(169) 评论(0) 推荐(0)
摘要:一、Floyd-Warshall 算法简介:简单优雅! 如果要让任意两点之间的路程变短,只能引入另外的点集(请不要带入两点之间线段最短的真理,这里不是直线!) 于是,可以将图的二维平面,任意两点之间的距离,通过引入其他的点,缩短路程,直到所有的点集相互之间路程都达到最短! for(k=1;k<=n; 阅读全文
posted @ 2021-07-29 14:00 雅丽梅 阅读(95) 评论(0) 推荐(0)
摘要:重温一遍 No.4.3 层层递进-广度优先搜索:https://www.cnblogs.com/yalimy/p/15021065.html /* No.1 广度优先搜索,只找出最短路径层数即可struct node{ int x; //当前节点 int y; //层数};struct node q 阅读全文
posted @ 2021-07-27 21:06 雅丽梅 阅读(44) 评论(0) 推荐(0)
摘要:一、要求:找出从节点1到节点5的全部路径和最短路径! /*有向图的深度优先遍历:打印所有路径,并找出最短路径#include <stdio.h>struct node{ //记录路径的stack,深度重试的时候,走过的距离也要回收,所以应该把路径也包含在深度搜索的参数里面 int x; //点下标 阅读全文
posted @ 2021-07-27 16:13 雅丽梅 阅读(227) 评论(0) 推荐(0)
摘要:问题什么的就不介绍了,<<啊哈!算法>>第四章 第六节 一、先用广度优先算法 #include<stdio.h> // x,y表示格子的坐标,a[x][y]表示格子使用的水管型号1~6,0表示树木,进水口左上右下分别用1,2,3,4表示int a[10][10],book[10][10]={0};i 阅读全文
posted @ 2021-07-22 16:46 雅丽梅 阅读(137) 评论(0) 推荐(0)
摘要:简单介绍:在一个二维格子上面的一点,其相邻的格子:0表示海洋,1~9表示陆地,求一个目标格子所在的岛面积。 注意:与目标点上下左右相链接的陆地视为同一岛屿,不纠结其他四个角! 一、广度优先 VS 深度优先 /* No.1 广度优先搜索#include <stdio.h>struct node{ // 阅读全文
posted @ 2021-07-21 19:21 雅丽梅 阅读(65) 评论(0) 推荐(0)
摘要:求解,炸弹放在哪个位置,消灭的僵尸最多? //G=敌人, .=地面, #=墙壁,炸弹可以向上下左右四个方向无限杀敌,只要不遇到墙壁,位置必须可达,而且只能是地面 一、广度优先搜索 struct node { //广优必须有一个队列记录同一层的节点 int x; int y;};char map[20 阅读全文
posted @ 2021-07-20 14:37 雅丽梅 阅读(73) 评论(0) 推荐(0)
摘要:一、深度优先搜索:从开始位置进行尝试,直到走不通的时候,再返回到上一层“递归“继续尝试 广度优先搜索:从开始位置起,搜索每一种可能路径并加入到队列,再从队列中的所有元素搜索所有的下一层可能路径,即首先穷尽最上层可能,再逐层递进,那么找到目标的那一刻,最短层数既是最短路径! 把此图顺时针旋转45度,呈 阅读全文
posted @ 2021-07-16 17:13 雅丽梅 阅读(180) 评论(0) 推荐(0)
摘要:用迷宫试试二维平面中,深度优先算法的应用:求从出发位置到目标位置的最短路径,要求走过的路(格子)就不能再回头,有障碍物的格子不可通行。 #include <stdio.h> int a[50][50],book[50][50]; //平面边界与标记数组int n,m,p,q,min=10000; / 阅读全文
posted @ 2021-07-16 10:37 雅丽梅 阅读(39) 评论(0) 推荐(0)
摘要:/*No.1 不撞南墙不回头-深度优先搜索向盒子里放扑克牌,每个盒子只能放一张,共有多少种放法? int a[10],book[10],n; //C变量默认初始化为0 void dfs(int step){ //step表示第几个盒子 int i; if(step==n+1) //n+1,表示所有的 阅读全文
posted @ 2021-07-13 20:46 雅丽梅 阅读(67) 评论(0) 推荐(0)
摘要:一、计算一个公式,将数字1~9分别填入空格,要求每个数字出现一次,并使等式成立 int main(){ int a[10],i,total=0,book[10],sum; for(a[1]=1;a[1]<=9;a[1]++) for(a[2]=1;a[2]<=9;a[2]++) for(a[3]=1 阅读全文
posted @ 2021-07-13 10:45 雅丽梅 阅读(105) 评论(0) 推荐(0)
摘要:一、链表简介 数组/列表:作为一个整体出现,只能在头、尾进行更新操作 链表:指针+动态分配内存函数malloc实现,每个元素都有一个后向指针,指明下一个元素的位置,尾元素有个空指针。 1.关于指针: int a=10, *p; // * 间接运算符,作用是取得指针 p 指向的内存地址保存的变量值 p 阅读全文
posted @ 2021-07-08 15:41 雅丽梅 阅读(37) 评论(0) 推荐(0)
摘要:1.规则:将一副扑克牌平均分成两份,每人拿一份。小哼先拿出手中的第一张扑克牌放在桌上,然后小哈也拿出手中的第一张扑克牌,并放在小哼刚打出的扑克牌的上面,就像这样两人交替出牌。出牌时,如果某人打出的牌与桌上某张牌的牌面相同,即可将两张相同的牌及其中间所夹的牌全部取走,并依次放到自己手中牌的末尾。当任意 阅读全文
posted @ 2021-07-08 13:53 雅丽梅 阅读(1394) 评论(0) 推荐(0)
摘要:一、回文判断,用上节中的struct queue更方便一点,本节用stack作为入点 栈stack的一个难点是:指针top指向的是栈顶元素,还是空闲位置? 比如书中写法:top=0; top++; s[top] = x; -> 初始化起点为0,第一个写入元素位置为top=1; -> 这里top指针指 阅读全文
posted @ 2021-07-07 15:25 雅丽梅 阅读(66) 评论(0) 推荐(0)
摘要:一、解密一个队列:“6 3 1 7 5 8 9 2 4” 首先将第1 个数删除,紧接着将第2 个数放到这串数的末尾,再将第3 个数删除并将第4 个数放到这串数的末尾,再将第5 个数删除……直到剩下最后一个数,将最后一个数也删除。按照刚才删除的顺序,把这些删除的数连在一起就是结果 注意: 1.这里的删 阅读全文
posted @ 2021-07-07 10:57 雅丽梅 阅读(96) 评论(0) 推荐(0)
摘要:一、时间复杂度: 1.毫无疑问,桶排序是最快的,时间复杂度为 O(N+M),N=初始化列表长度,M=输入队列的长度 2.冒泡排序是最慢的,时间复杂度 O(N*(N-1)/2) ~~ O(N**2) 3.快速排序是对冒泡排序的一种改进,时间复杂度为 O(NlogN) 比如说,当今计算机的计算能力达到每 阅读全文
posted @ 2021-07-07 08:44 雅丽梅 阅读(38) 评论(0) 推荐(0)
摘要:一、作为C++编程小白,有必要简单分析、记录下,快速排序算法的实现,以便后续复习: #include <stdio.h> int a[101], n; //定义全局变量,并在子函数中使用 void quicksort(int left, int right){ int i, j, t, temp; 阅读全文
posted @ 2021-07-06 21:04 雅丽梅 阅读(58) 评论(0) 推荐(0)
摘要:冒泡排序的基本思想是:每次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。时间复杂度O(N **2) /* 同一个 project 内,只能有一个 main function*/ EG1. 输入一列数字,并以从大到小的顺序输出 #include <stdio.h>void main(){ i 阅读全文
posted @ 2021-07-06 15:23 雅丽梅 阅读(48) 评论(0) 推荐(0)
摘要:一、简单的桶排序:非常浪费空间!而且限制较多!时间复杂度O(N+M) EG1. 编写一段程序,让计算机随机读入5 个数然后将这5 个数从大到小输出? #include <stdio.h> //引入头文件,包含很多常用函数,如printfint main() // int表示返回值,无需返回值用voi 阅读全文
posted @ 2021-07-05 20:51 雅丽梅 阅读(86) 评论(0) 推荐(0)