算法应用
依然^^^
只要不失去你的崇高,整个世界都会向你敞开。
展开
-
两次bfs求树的直径
两次bfs求树的直径方法:先从任意一点R出发,找离它最远的点S,再从点S出发,找离它最远的点T,S到T的距离就是是的直径。****算法证明:①若R已经在直径上,根据树的直径的定义可知S也在直径上且为直径的一个端点。T就一定是另一个端点。②若R不在直径上,我们用反证法,假设此时ST不是直径,AB是直径。此时的话。证明在RS和AB相交和不相交的情况之下,都由S是树上距离R最远的点可以得到,有比AB更长的路径。与假设相悖,所以,ST就是直径。//无向图,使用可变长二维数组存树//第一行输入定原创 2021-09-30 17:00:10 · 290 阅读 · 0 评论 -
电梯里的BFS
电梯里的BFS**样例输入5 1 53 3 1 2 50样例输出3**#include<iostream>#include<queue>using namespace std; int main(){ int N,A,B,t;//t用来标记样例的组数 int k[210]; int flag[100001];//到达的最少步数 queue<int> q; cin>>N; while(N) { cin>&g原创 2021-09-30 00:41:16 · 71 阅读 · 0 评论 -
do{...}while()
do{…}while()**近来,跳一跳这款小游戏风靡全国,受到不少玩家的喜爱。 简化后的跳一跳规则如下:玩家每次从当前方块跳到下一个方块,如果没有跳到下一个方块上则游戏结束。 如果跳到了方块上,但没有跳到方块的中心则获得1分;跳到方块中心时,若上一次的得分为1分或这是本局游戏的第一次跳跃则此次得分为2分,否则此次得分比上一次得分多两分(即连续跳到方块中心时,总得分将+2,+4,+6,+8…)。 现在给出一个人跳一跳的全过程,请你求出他本局游戏的得分(按照题目描述的规则)。输入格式输入包原创 2021-09-28 22:20:48 · 53 阅读 · 0 评论 -
报数淘汰小游戏(LIST)
循环报数**有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……,1号小朋友坐在n号小朋友的顺时针方向。 游戏开始,从1号小朋友开始顺时针报数,接下来每个小朋友的报数是上一个小朋友报的数加1。若一个小朋友报的数为k的倍数或其末位数(即数的个位)为k,则该小朋友被淘汰出局,不再参加以后的报数。当游戏中只剩下一个小朋友时,该小朋友获胜。 例如,当n=5, k=2时: 1号小朋友报数1; 2号小朋友报数2淘汰; 3号原创 2021-09-27 22:50:49 · 349 阅读 · 0 评论 -
关于Runtime error
关于Runtime error~~是指运行时错误,即程序未正常运行到结束。而在中途终止。~可能的原因:1、数组越界;2、指针越界;3、数组开的太大了,造成栈空间不足溢出;4、使用已经释放掉的空间;5、0做除数。其中对于1、不能使用数组的组后一个空间;3、数组开成全局变量。...原创 2021-04-06 21:37:22 · 645 阅读 · 0 评论 -
关于vscode
1原创 2021-04-07 00:16:59 · 35 阅读 · 0 评论 -
前缀和+字母出现次数例题
前缀和+字母出现次数例题问题描述你面前有 n块巨石排成一行,每个上面有一个大写字母。接下来有 m个询问,每一个询问包含两个数字 l,r,对于每个询问,你需要回答这个处于区间 [l,r]的石块上的字母是否每一个英文字母都至少出现了一次。输入格式第一行一个整数 n, n≤5×10^5第二行,一个长度为 n的字符串第三行,一个整数 m, m≤5×10^5接下来的 m 行,每行两个整数表示 l,r, 1<=l<=r<=n;输出格式输出包含 m行,每行一个 YES ,或者NO 。原创 2021-04-10 02:40:46 · 479 阅读 · 0 评论 -
BFS走迷宫
**BFS走迷宫**走迷宫问题就是在一个矩阵输入的迷宫中,从开始的点找到一条路通往终点。是一个搜索+扩散+不重复路径的问题,也就是一个BFS应用的问题。BFS得到的是图上从源点到个点的最短路径的一颗最短路径树,所以执行到最后可以得到源节点到每一个节点的最短路径长度,需要的话可以通过记录前驱的方式来构建最短路。/*一个BFS的应用一个n*m的迷宫;n行m列有的格子里有障碍物,不能走;有的格子是空地,可以走;给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到)。只能在水原创 2021-09-26 23:06:47 · 260 阅读 · 0 评论