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

做网站能赚钱吗知乎佛山网站优化好

做网站能赚钱吗知乎,佛山网站优化好,网站建设丨找王科杰信誉,傻瓜动态建站 工具一、深度优先搜索(DFS):一条路走到黑的探索哲学 1. 算法核心思想 DFS(Depth-First Search)遵循 “深度优先” 原则,从起始节点出发,尽可能深入地访问每个分支,直到无法继续时回溯&a…

一、深度优先搜索(DFS):一条路走到黑的探索哲学

1. 算法核心思想
DFS(Depth-First Search)遵循 “深度优先” 原则,从起始节点出发,尽可能深入地访问每个分支,直到无法继续时回溯,尝试其他路径。这种策略类似走迷宫时 “不撞南墙不回头” 的探索方式,通过递归或栈结构实现路径的遍历与回溯。

2. 经典场景:全排列问题(字典序输出)
问题描述:给定整数 n,按字典序输出 1~n 的所有排列。
算法分析

  • ans数组记录当前排列,mark数组标记数字是否已使用。
  • 递归函数dfs(u)表示填充第 u 位数字,通过枚举 1~n 的未使用数字,递归构建全排列。
  • 回溯时需清除标记,确保数字可重复选择(不同排列路径)。

C++ 代码实现

cpp

#include <iostream>
using namespace std;
const int N = 10;
int ans[N], n;
bool mark[N]; // 标记数字是否已使用void dfs(int u) {if (u == n) { // 递归终止条件:填满所有位置for (int i = 0; i < n; i++) cout << ans[i];cout << endl;return;}for (int i = 1; i <= n; i++) {if (!mark[i]) { // 选择未使用的数字mark[i] = true;ans[u] = i;dfs(u + 1); // 递归填充下一位mark[i] = false; // 回溯:清除标记ans[u] = 0; // 重置当前位}}
}int main() {cin >> n;dfs(0);return 0;
}

3. 算法特性与应用

  • 空间效率:递归深度为图的高度,最坏情况下需 O (n) 空间(如树退化为链表)。
  • 典型应用
    • 拓扑排序(有向无环图 DAG)
    • 连通分量检测(无向图)
    • 路径搜索与环检测
二、广度优先搜索(BFS):层次扩展的最短路径探索

1. 算法核心思想
BFS(Breadth-First Search)以 “层” 为单位遍历图,从起始节点出发,先访问所有相邻节点(第一层),再依次访问下一层节点。这种策略确保首次访问某节点时路径最短,因此天然适用于最短路径问题。

2. 经典场景:迷宫最短路径
问题描述:在 n×m 的迷宫中,从左上角 (0,0) 到右下角 (n-1,m-1),求最少移动次数(0 可走,1 为墙)。
算法分析

  • 使用队列实现层次遍历,mark数组记录到达各点的步数(初始为 - 1 表示未访问)。
  • 方向向量dx/dy定义上下左右移动,每次从队列取出当前节点,向四个方向扩展新节点。
  • 首次到达终点时的步数即为最短路径(BFS 的层次特性保证)。

C++ 代码实现

cpp

#include <iostream>
#include <queue>
#include <cstring>
using namespace std;
typedef pair<int, int> PII; // 坐标对
const int N = 110;
int map[N][N], mark[N][N]; // map存储迷宫,mark存储步数
int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1}; // 上下左右方向
int n, m;void bfs() {memset(mark, -1, sizeof mark); // 初始化步数为-1queue<PII> q;q.push({0, 0}); // 起点入队mark[0][0] = 0; // 起点步数为0while (!q.empty()) {PII top = q.front(); // 取出当前节点q.pop();for (int i = 0; i < 4; i++) { // 遍历四个方向int nx = top.first + dx[i], ny = top.second + dy[i];// 检查边界、是否可通行、是否未访问if (nx >= 0 && nx < n && ny >= 0 && ny < m && map[nx][ny] == 0 && mark[nx][ny] == -1) {mark[nx][ny] = mark[top.first][top.second] + 1; // 步数+1q.push({nx, ny}); // 新节点入队if (nx == n - 1 && ny == m - 1) return; // 提前终止(找到终点)}}}
}int main() {cin >> n >> m;for (int i = 0; i < n; i++)for (int j = 0; j < m; j++)cin >> map[i][j];bfs();cout << mark[n-1][m-1] << endl; // 输出最短步数return 0;
}

3. 关键细节解析

  • 队列的作用:保证按层遍历,先入队的节点先处理,确保首次访问即最短路径。
  • 方向向量:通过数组统一管理移动方向,避免重复编写坐标变换代码。
  • 标记数组的双重功能:既记录是否访问过,又存储最短步数,空间效率更高。
三、DFS 与 BFS 对比与选型建议
特性DFSBFS
遍历方式深度优先,递归 / 栈实现广度优先,队列实现
空间复杂度O (深度)(可能栈溢出)O (宽度)(适合大规模图需优化)
最短路径不适用(非层次遍历)天然支持(首次访问即最短路径)
典型场景全排列、拓扑排序、环检测最短路径、社交网络最近邻搜索

选型建议

  • 求路径存在性或枚举所有可能:优先选 DFS(代码简洁,递归实现更直观)。
  • 求最短路径或层次相关问题:必须选 BFS(利用队列的层次特性)。
四、扩展与优化技巧

1. DFS 优化

  • 迭代实现:用栈模拟递归,避免系统栈溢出(适用于 n>1e4 的场景)。
  • 剪枝策略:提前排除不可能的路径(如全排列中数字已使用),减少递归次数。

2. BFS 优化

  • 双向 BFS:从起点和终点同时搜索,相遇时即为最短路径,时间复杂度显著降低。
  • 优先队列(Dijkstra 算法):处理带权图的最短路径问题,本质是 BFS 的贪心扩展。
五、总结

DFS 与 BFS 是图论的基石算法,分别代表 “深度探索” 与 “层次扩展” 的思维模式。掌握两者的核心原理、代码实现及适用场景,是解决图论问题的关键。实际应用中,可根据问题特性灵活选择算法,并结合优化技巧提升效率。


文章转载自:

http://47dw1h08.stcds.cn
http://BbAVqDJe.stcds.cn
http://HxVMQSbo.stcds.cn
http://28QVqi60.stcds.cn
http://WlYHQpdt.stcds.cn
http://w9gOxF6j.stcds.cn
http://vtdbPhYM.stcds.cn
http://iyn45hNQ.stcds.cn
http://kDYkz9YP.stcds.cn
http://83sAY0eO.stcds.cn
http://mWuBY6pj.stcds.cn
http://TLwYd3kt.stcds.cn
http://YcnX0eqC.stcds.cn
http://ptHF1gxt.stcds.cn
http://ZXNUTJMz.stcds.cn
http://sg7cz2F2.stcds.cn
http://vKkIpHPg.stcds.cn
http://yvfVE4lh.stcds.cn
http://j8iHAEBl.stcds.cn
http://bbBP7zI1.stcds.cn
http://eihW4UKt.stcds.cn
http://xd8FWhEt.stcds.cn
http://bwCsbKRH.stcds.cn
http://wgh904w6.stcds.cn
http://umKMCh2m.stcds.cn
http://zFLrJJkh.stcds.cn
http://wbTJUpbP.stcds.cn
http://0LXqAx3l.stcds.cn
http://esSlqxAJ.stcds.cn
http://LsxdrpE8.stcds.cn
http://www.dtcms.com/wzjs/762155.html

相关文章:

  • 天津seo网站排名优化公司快速提高排名
  • 潍坊市奎文区建设局网站wordpress git page
  • seo做的不好的网站网站主页设计欣赏
  • 郑州那家做网站便宜织梦做网站教程
  • 天河建网站公司切管机维修 东莞网站建设
  • 做窗帘的厂家网站wordpress插件分类
  • 卡盟怎么网站怎么做邢台柏乡县建设局网站
  • 怎么在阿里巴巴网站做公司网站的首页需要什么内容
  • 如何做黑彩网站哈尔滨建设网站官网
  • 自助建站系统个人网站制作图片的软件是
  • 网站项目上线流程国际网站建设的目的
  • 热烈祝贺网站上线天津关键词优化网排名
  • 网站的流量是怎么回事互联网公司起名
  • 结构设计网站推荐微网站怎么建设
  • 制作一个网站费用2023年小学生简短小新闻
  • PHP网站建设计划书网站建设好怎么才有生意
  • 网站开发时的闭包写法今天最新消息
  • 手机怎么做网站卖东西招聘类网站建设
  • 创建网站怎么赚钱做网站南宁
  • 可以做推送的网站学校网站系统破解版
  • 营销型网站需要注意安装wifi需要多少钱
  • 网站地图 htmlseo推广营销网站
  • 哈尔滨高端网站设计网站如何做图片特效
  • 房子信息查询网站入口苏州网站建设建网站
  • 网站从建设到上线流程做资源网站有哪些
  • 网站怎么做移动图片大全西安网页制作模板
  • 甘肃县门户网站建设方案深圳工商注册核名查询系统
  • 淮南网站网站建设网站什么时候做解析
  • 郑州冬青街 网站建设有没有免费的小程序制作
  • 如何制作免费的公司网站外链seo软件下载