当前位置: 首页 > news >正文

优化大师app长沙搜索排名优化公司

优化大师app,长沙搜索排名优化公司,wordpress网站换空间,信贷 网站模板 下载介绍 深度优先搜索#xff08;Depth-First Search#xff0c;DFS#xff09;是一种常用的图搜索算法#xff0c;它用于查找图或树数据结构中的路径或解决问题。下面是深度优先搜索的常见步骤以及一个示例问题#xff1a; 深度优先搜索的常见步骤#xff1a; 选择起始节… 介绍 深度优先搜索Depth-First SearchDFS是一种常用的图搜索算法它用于查找图或树数据结构中的路径或解决问题。下面是深度优先搜索的常见步骤以及一个示例问题 深度优先搜索的常见步骤 选择起始节点首先选择一个起始节点从该节点开始搜索。 访问节点访问当前节点并标记它为已访问。这可以通过将节点标记为已访问或将其添加到访问过的节点列表中来实现。 探索相邻节点从当前节点出发探索其相邻节点。这可以通过遍历与当前节点相连接的边或邻接节点来实现。 递归或栈对于每个相邻节点如果它还没有被访问过就递归地或使用栈将其作为当前节点进行访问。这是深度优先搜索的关键部分它会一直沿着一个路径深入直到达到叶子节点或无法继续深入为止。 回溯当无法继续深入时回溯到上一个节点并尝试探索其他相邻节点直到找到解决方案或访问完所有节点。 重复步骤3至步骤5重复步骤3至步骤5直到找到问题的解决方案或访问了所有可达节点。 简单的例子 #include iostream #include vectorusing namespace std;// 定义图的节点结构 struct Node {int val;vectorNode* neighbors;bool visited;Node(int _val) : val(_val), visited(false) {} };// 深度优先搜索函数 bool dfs(Node* current, Node* target, vectorNode* path) {if (current target) {path.push_back(current);return true;}current-visited true;path.push_back(current);for (Node* neighbor : current-neighbors) {if (!neighbor-visited) {if (dfs(neighbor, target, path)) {return true;}}}// 如果无法找到路径回溯path.pop_back();return false; }int main() {// 创建节点Node* A new Node(1);Node* B new Node(2);Node* C new Node(3);Node* D new Node(4);// 构建图的连接关系A-neighbors.push_back(B);A-neighbors.push_back(C);B-neighbors.push_back(D);C-neighbors.push_back(D);// 初始化路径vectorNode* path;// 执行深度优先搜索bool foundPath dfs(A, D, path);// 输出结果if (foundPath) {cout Path from A to D found: endl;for (Node* node : path) {cout node-val ;}cout endl;} else {cout Path from A to D not found. endl;}// 释放节点内存delete A;delete B;delete C;delete D;return 0; } /* 在这个示例中我们首先定义了一个表示图节点的结构体Node每个节点具有一个值、一个标记用于表示是否已访问和一个邻接节点的列表。然后我们实现了一个深度优先搜索函数dfs该函数递归地探索图中的节点同时维护一个路径列表。如果找到从起始节点到目标节点的路径它将返回true并在路径列表中存储找到的路径。在main函数中我们创建了图的节点并构建了节点之间的连接关系。然后我们调用dfs函数来查找从节点A到节点D的路径并输出结果。如果路径存在它将打印出路径上的节点值否则会显示未找到路径。最后我们释放了节点的内存以避免内存泄漏。 */题目1华为机试题43 迷宫问题。 地址 迷宫问题_牛客题霸_牛客网 题目描述 定义一个二维数组 N*M 如 5 × 5 数组下所示 int maze[5][5] { 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 它表示一个迷宫其中的1表示墙壁0表示可以走的路只能横着走或竖着走不能斜着走要求编程序找出从左上角到右下角的路线。入口点为[0,0],既第一格是可以走的路。 数据范围 2≤n,m≤10   输入的内容只包含 0≤val≤1 输入描述 输入两个整数分别表示二维数组的行数列数。再输入相应的数组其中的1表示墙壁0表示可以走的路。数据保证有唯一解,不考虑有多解的情况即迷宫只有一条通道。 输入 5 5 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 复制 输出 (0,0) (1,0) (2,0) (2,1) (2,2) (2,3) (2,4) (3,4) (4,4) 复制 示例2 输入 5 5 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 复制 输出 (0,0) (1,0) (2,0) (3,0) (4,0) (4,1) (4,2) (4,3) (4,4) 复制 说明 注意不能斜着走 #include iostream #includevector using namespace std;vectorvectorint res; bool dfs(vectorvectorint v, int m, int n, int i, int j) {if (i m - 1 j n - 1) {res.push_back({i, j});return true;}//通过这个false 判定这个结果。if (i 0 || i m || j 0 || j n || v[i][j] -1 || v[i][j] 1) {return false;}v[i][j] -1;res.push_back({i, j});if (dfs(v, m, n, i - 1, j) || dfs(v, m, n, i 1, j) ||dfs(v, m, n, i, j - 1) || dfs(v, m, n, i, j 1)) {return true;}res.pop_back();v[i][j] 0;return false;}int main() {int m, n;int temp;cin m n;vectorvectorint v(m, vectorint(n, 0));for (int i 0; i m; i) {for (int j 0; j n; j) {cin v[i][j];}}dfs(v,m,n,0,0);for(const auto x:res){// printf((%d,%d)\n,x[0],[1]);// printf((%d,%d) \n,x[0],[1]);printf((%d,%d)\n, x[0], x[1]);}return 0;} 题目2剑指offer12 矩阵中的路径 链接力扣LeetCode官网 - 全球极客挚爱的技术成长平台 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中返回 true 否则返回 false 。 单词必须按照字母顺序通过相邻的单元格内的字母构成其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 例如在下面的 3×4 的矩阵中包含单词 ABCCED单词中的字母已标出。 示例 1 输入board [[A,B,C,E],[S,F,C,S],[A,D,E,E]], word ABCCED 输出true示例 2 输入board [[a,b],[c,d]], word abcd 输出false class Solution6 { public:bool dfs(vectorvectorchar board,string word,int i,int j,int k,vectorvectorint path){if(i0||iboard.size()||j0||jboard[0].size()||path[i][j]1){return false;}if(board[i][j]word[k]kword.size()-1){return true;}if(word[k]board[i][j]){path[i][j]1;if(dfs(board,word,i1,j,k1,path)||dfs(board,word,i-1,j,k1,path)||dfs(board,word,i,j-1,k1,path)||dfs(board,word,i,j1,k1,path)){return true;}}path[i][j]0;return false;}bool exist(vectorvectorchar board, string word) {int mboard.size();int nboard[0].size();bool resfalse;vectorvectorint path(m,vectorint(n,0));for(int i0;im;i){for(int j0;jn;j){res dfs(board, word, i, j, 0, path);if(res){//i,j 是起点只要有一个七点满足条件就可以return true;}}}return res;}};int main() {Solution6 s;vectorvectorchar board {{A, B, C, E}, {S, F, C, S}, {A, D, E, E}};// vector vectorchar board{}string word ABCCED;bool res s.exist(board, word);cout res endl;system(pause);return 0; } 题目3 leetcode 200岛屿的数量  leet200 岛屿的数量 https://leetcode.cn/problems/number-of-islands/ 给你一个由 1陆地和 0水组成的的二维网格请你计算网格中岛屿的数量。 岛屿总是被水包围并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外你可以假设该网格的四条边均被水包围。 示例 1 输入grid [   [1,1,1,1,0],   [1,1,0,1,0],   [1,1,0,0,0],   [0,0,0,0,0] ] 输出1 示例 2 输入grid [   [1,1,0,0,0],   [1,1,0,0,0],   [0,0,1,0,0],   [0,0,0,1,1] ] //可以这么理解(遍历整个岛屿的元素如果是1就对这个点的值进行深度优先搜索将相邻的全部改成0) 岛屿的数量1。 class Solution7 { public:int n;void dfs(vectorvectorchar grid, int i, int j, int m, int n){if (i 0 || i m || j 0 || j n || grid[i][j] 0){return;}grid[i][j] 0;dfs(grid, i - 1, j, m, n);dfs(grid, i 1, j, m, n);dfs(grid, i, j - 1, m, n);dfs(grid, i, j 1, m, n);return;}int numIslands(vectorvectorchar grid){int m grid.size();int n grid[0].size();int num 0;// vectorvectorbool pathvector(m,vectorint(n,0));for (int i 0; i m; i){for (int j 0; j n; j){if (grid[i][j] 1){n;dfs(grid, i, j, m, n);}}}return n;} };int main() {Solution7 s7;vectorvectorchar gird {{1}, {1}};auto res s7.numIslands(gird);cout res endl;system(pause);return 0; } 后续待补
http://wiki.neutronadmin.com/news/375642/

相关文章:

  • 青岛seo网站推广wordpress页面模板是哪个文件夹
  • 制作静态网站的工具有哪些现在什么网站做外贸的最好
  • 内蒙古工程建设协会网站企业网站建设版本
  • 清远住房和城乡建设局网站江门市建设银行网站
  • 上海 网站建设 排名可以申请域名的网站
  • 东莞企业网站建设公司网站建设推广代理商
  • 网站模板图网站建设公司需要什么资质
  • cco网站素材网页设计与网站建设作业怎么做
  • 做张家界旅游网站多少钱免费浏览器大全
  • 网站使用说明书模板手机网站建设公司排名
  • 网站建设需要服务器吗技能培训班
  • 南昌seo网站西安app开发
  • 淘宝网站优惠券统一修改怎么做wordpress建好后
  • 购物网站前台功能模块分析网页制作公司深圳
  • 网站建设方案书制作ip做网站域名
  • 企业网站推广的模式创建目录wordpress
  • 做网站不知道做什么内容的企业采购
  • 曲阜网站建设哪些网站可以做代理
  • 银川网站建设哪家好成都营销策划公司
  • 大型网站构建实施方案张家界商城网站建设
  • 佛山当地网站建设公司wordpress 扫码支付
  • 教育类网站框架彩票网站做代理
  • 东莞美容网站建设网站前台建设用到哪些工具
  • 网站开发在线网站的结构设计
  • 自己做一网站 多做宣传.手机如何建网站
  • 动漫做那个视频网站做网站 做好把我踢开
  • 住房城乡建设网站查询平面设计转行做什么比较好
  • 网页制作 公司网站什么网站可以帮人做ppt赚钱
  • 网站的ftp地址是什么深圳平湖网站建设
  • 长沙网站开发培训学校做统计表的网站