标签:-- cpp weixin 深度优先搜索 初始化 直接 函数 方便 标记
图的定义
稀疏图将浪费大量的空间
操作复杂
注意邻接链表的结构体定义 --- 不要搞混不要被绕晕啊! 嵌套太多了 有时用指针 还要看清给的int还是char
typedef struct ArcNode { int adjvex; struct ArcNode * nextarc; Otherinfo info; }ArcNode; typedef struct VNode { VerTexType data; ArcNode *firstarc; }VNode,AdjList[MVNum]; typedef struct { AdjList vertices; int vexnum,arcnum; }ALGraph;
深度优先遍历
利用递归思想 连通图与非连通图的区别
--- 非连通图 遍历每个连通分量 ! (注意遍历的顺序呀
void DFS(AMgraph G,int v) {//图G为邻接矩阵类型,从第v个顶点出发深度优先搜索遍历图G cout<<v; bool *visited = new bool[MVNum]; visited[v]=true; int w; for(w=0;w<G.vexnum;w++) if((G.arcs[v] [w] !=0)&&(!visited[w])) DFS(G,w); //G.arcs[v] [w] ! =0表示w是v的邻接点, 如果w未访问, 则递归调用DFS }
广度优先遍历
队列 (注意队列不为空 循环 --- 直到所有顶点都被遍历
先访问再入队?还是直接入队
PTA笔记
1.在有向图的邻接表中,从一bai顶点出发的弧链du接在同一链表中zhi,邻接表中结点的个数恰为图中弧的数目dao,所以顶点入度之和为弧数和的一倍,若为无向图,同一条边有两个结点,分别出现在和它相关的两个顶点的链表中,因此无向图的邻接表中结点个数的边数的2倍
2
https://blog.csdn.net/weixin_43751983/article/details/103392635
3
全连通图的定点 n 和边数 m
m = n(n-1)/2
那么du边 m = 22 时, 图 G:
n(n-1)/2 >= 22
n >= 8
而且,当 n = 7 时,全连通图 G‘ 的边数 m = 21
当我们把第zhi 8 个定点加上来,必然还dao要再在这个定点和上面7个定点相连,以便构成第 22 边
(8个顶点不足以构成22边非连通图)
加上第 9 个定点后,可以在 (8, 9) 之间构成第22边,或者,选择 8, 或 9 作为孤立点,构成非连通图
至少有 9 个顶点
PTA作业和实践 007
在老电影“007之生死关头”(Live and Let Die)中有一个情节,007被毒贩抓到一个鳄鱼池中心的小岛上,他用了一种极为大胆的方法逃脱 —— 直接踩着池子里一系列鳄鱼的大脑袋跳上岸去!(据说当年替身演员被最后一条鳄鱼咬住了脚,幸好穿的是特别加厚的靴子才逃过一劫。)
设鳄鱼池是长宽为100米的方形,中心坐标为 (0, 0),且东北角坐标为 (50, 50)。池心岛是以 (0, 0) 为圆心、直径15米的圆。给定池中分布的鳄鱼的坐标、以及007一次能跳跃的最大距离,你需要告诉他是否有可能逃出生天。
输入格式:
首先第一行给出两个正整数:鳄鱼数量 N(≤)和007一次能跳跃的最大距离 D。随后 N 行,每行给出一条鳄鱼的 ( 坐标。注意:不会有两条鳄鱼待在同一个点上。
输出格式:
如果007有可能逃脱,就在一行中输出"Yes",否则输出"No"
sample
14 20 25 -15 -25 28 8 49 29 15 -35 -2 5 28 27 -29 -8 -28 -20 -35 -25 -20 -13 29 -30 15 -35 40 12 12
yes4 13 -12 12 12 12 -12 -12 12 -12
no
深度优先遍历时,对每一个访问的结点设置该节点已经访问过,并判断从该节点是否可以一次跳到岸边 可以的话直接返回
否则 对其他结点判断,如果该节点可以到达且没有访问过 就对这个结点进行深度优先遍历
我的bug
改进
https://www.cnblogs.com/X-Do-Better/p/9048604.html
标签:-- cpp weixin 深度优先搜索 初始化 直接 函数 方便 标记
原文地址:https://www.cnblogs.com/drgnibasaw/p/13125687.html