- 博客(14)
- 收藏
- 关注
转载 深度优先遍历和广度优先遍历
深度优先遍历(Depth First Search, 简称 DFS) 与广度优先遍历(Breath First Search)是图论中两种非常重要的算法,生产上广泛用于拓扑排序,寻路(走迷宫),搜索引擎,爬虫等,也频繁出现在 leetcode,高频面试题中。本文将会从以下几个方面来讲述深度优先遍历,广度优先遍历,相信大家看了肯定会有收获。深度优先遍历,广度优先遍历简介习题演练DFS,BFS 在搜索引擎中的应用深度优先遍历,广度优先遍历简介深度优先遍历主要思路是从图中一个未访问的顶点 V 开始,
2021-06-19 15:32:17
5625
原创 022:迷宫问题
定义一个二维数组:int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,};它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。输入一个5 × 5的二维数组,表示一个迷宫。数据保证有唯一解。输出左上角到右下角的最短路径,格式如样例所示。样例输入0 1 0 0 00 1 0 1 00
2021-06-18 10:10:14
267
原创 六度空间(广度优先搜索)
7-7 六度空间 (30 分)“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。图1 六度空间示意图“六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然而由于历史的原因,这样的研究具有太大的局限性和困难。随着当代人的联络主要依赖于电话、短信、
2021-06-18 09:39:08
828
原创 022:迷宫问题(程序设计与算法2,广度优先搜索)
描述定义一个二维数组:int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,};它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。输入一个5 × 5的二维数组,表示一个迷宫。数据保证有唯一解。输出左上角到右下角的最短路径,格式如样例所示。样例输入0 1 0 0 00 1 0 1 0
2021-05-09 13:00:12
350
转载 深度优先搜索
在我们遇到的一些问题当中,有些问题我们不能够确切的找出数学模型,即找不出一种直接求解的方法,解决这一类问题,我们一般采用搜索的方法解决。搜索就是用问题的所有可能去试探,按照一定的顺序、规则,不断去试探,直到找到问题的解,试完了也没有找到解,那就是无解,试探时一定要试探完所有的情况(实际上就是穷举);对于问题的第一个状态,叫初始状态,要求的状态叫目标状态。搜索就是把规则应用于实始状态,在其产生的状态中,直到得到一个目标状态为止。产生新的状态的过程叫扩展(由一个状态,应用规则,产生新状态的过程)搜索的要
2021-05-05 09:28:49
239
原创 简单的整数划分问题(递归)
描述将正整数n 表示成一系列正整数之和,n=n1+n2+…+nk, 其中n1>=n2>=…>=nk>=1 ,k>=1 。正整数n 的这种表示称为正整数n 的划分。正整数n 的不同的划分个数称为正整数n 的划分数。输入标准的输入包含若干组测试数据。每组测试数据是一个整数N(0 < N <= 50)。输出对于每组测试数据,输出N的划分数。样例输入5样例输出7提示5, 4+1, 3+2, 3+1+1, 2+2+1, 2+1+1+1, 1+1+1+1
2021-05-03 23:22:47
1117
原创 特殊密码锁(熄灯问题)
01:特殊密码锁总时间限制: 1000ms 内存限制: 1024kB描述有一种特殊的二进制密码锁,由n个相连的按钮组成(n<30),按钮有凹/凸两种状态,用手按按钮会改变其状态。然而让人头疼的是,当你按一个按钮时,跟它相邻的两个按钮状态也会反转。当然,如果你按的是最左或者最右边的按钮,该按钮只会影响到跟它相邻的一个按钮。当前密码锁状态已知,需要解决的问题是,你至少需要按多少次按钮,才能将密码锁转变为所期望的目标状态。输入两行,给出两个由0、1组成的等长字符串,表示当前/目标密码锁状态,其
2021-05-02 23:02:04
261
原创 输入一个数,打印从 1 ~ n 的全排列
1-n个数的全排列1~n个数的全排列时间限制: 1.000 Sec 内存限制: 16 MB题目描述一个n位数,只由1,2,3,4…n这几个数字组成。 请编写程序输出这些n位数,先小后大,每行一个。输入一个整数n(n<9)输出若干行数样例输入 复制4输出 复制…23142341…这个问题用递归来实现比较好,本人写的感觉有一点像深度搜索(不知道也没关系)。回忆一下,4个数,我们用了4层循环,n个数,我们用n个循环,这里就要考虑到递归。用一个变量death来表示现在在操作第
2021-05-02 09:06:03
2666
原创 贪吃蛇3.0随机移动
贪吃蛇3.0随机移动#include<bits/stdc++.h>#include<conio.h>using namespace std;char a[200][200],o,op;int n,m,number=10;struct date{ int h,s;}p[20000];inline void create1(){ srand(time(NULL)); m=rand()%43+2; n=rand()%78+2; a[m][n]='$';}i
2021-02-04 14:43:18
93
原创 贪吃蛇AI操控
贪吃蛇AI操控#include<bits/stdc++.h>#include<windows.h>using namespace std;char a[200][200];int number=10,n,m,cox,coy,r;struct date{ int h,s;}p[200200];void f(){ for(int i=2;i<=number;i++) { a[p[i].h][p[i].s]='*'; } a[p[1].h][p[1]
2021-02-04 14:42:20
118
原创 贪吃蛇2.0
贪吃蛇2.0#include<bits/stdc++.h>#include<conio.h>using namespace std;char a[200][200],o;int n,m,number=10;struct date{ int h,s;}p[20000];void create1(){ srand(time(NULL)); m=rand()%43+2; n=rand()%78+2; a[m][n]='$';}bool finds(){
2021-02-03 17:05:10
99
原创 贪吃蛇1.0
贪吃蛇1.0#include<bits/stdc++.h>#include<conio.h>using namespace std;char a[200][200],o;int n,m;struct date{ int h,s;}p[20];void create1(){ srand(time(NULL)); m=rand()%43+2; n=rand()%78+2; a[m][n]='$';}bool finds(){ if(p[1].h==m
2021-02-02 20:00:07
72
原创 c++指针
这里写自定义目录标题生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入c++指针指针有很多类型:指向一个数的指针,数组指针,指针数组,函数指针。这次就讲一个指向一个数的指针很好理解,如下;#include<bits/stdc++.h>using namespace std;int *a;int main
2021-01-30 10:46:56
235
原创 N皇后问题
#include<bits/stdc++.h>using namespace std;int queen[100],n;void nqueen(int k){if(k==n+1){for(int i=1;i<=n;i++)printf("%-4d",queen[i]);cout<<endl;return ;}for(int i=1;i<=n;i++) //要摆的列{int j;for(j=1;j<k;j++)if(queen[j]==
2020-11-07 17:12:10
205
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人