登录社区云,与社区用户共同成长
邀请您加入社区
本文介绍了搜索算法的基本概念与实现方法。搜索是通过枚举所有可能情况来寻找最优解或统计合法解,主要包括深度优先搜索(DFS)和宽度优先搜索(BFS)。文中重点讲解了四种枚举问题的DFS实现:子集枚举通过递归构建选择路径,组合枚举按顺序选择元素,排列枚举使用标记数组避免重复,全排列则输出所有可能的排列。每个算法都包含回溯过程,即撤销选择以恢复现场。这些方法为解决问题提供了系统的枚举框架,适用于各种组合
本文探讨了粉刷房屋最小成本问题的动态规划解法。给定一排n个房屋,每个房屋可涂红、蓝或绿三种颜色之一,要求相邻房屋颜色不同,且每个颜色对应不同成本。通过定义dp[i][j]表示第i个房屋涂j色的最小成本,建立递推关系式:dp[i][0]=min(dp[i-1][1],dp[i-1][2])+costs[i][0]。算法时间复杂度为O(n),空间复杂度O(n)(可优化为O(1))。核心思想是当前房屋的
本文介绍了两种经典回溯算法的应用:数独求解和单词搜索。对于数独问题,通过三张状态表(行、列、宫)进行强剪枝,结合回溯法高效求解。单词搜索则采用DFS回溯策略,通过访问标记避免重复使用格子,按顺序匹配单词字符。最后总结了回溯算法的三种模板:位置驱动型(如单词搜索)、选择驱动型(如全排列)和二叉决策型(如子集生成),并分析了各自的特点和应用场景。两种算法的时间复杂度在最坏情况下均为指数级,但通过剪枝和
枚举每个位置选还是不选。
首先要给出每一条线路的承载量,一定要把边都是有方向的。一定要指明一个源点跟目标点如图源点是A,目标点是D,如果从A点灌水,没一根关系都有它的承载量,问从A出发能灌多少水到D,整个流最大是多少?朴素的深度优先遍历不行,会因为选边的顺序导致算不出正确答案Dinic算法的主线它最普遍的一点就是它有一个负反馈路线,或者说他有一个隐含的路线。如图最大流量为80补反向边,也就是说你减少多少,你的反向边就增加多
leetcode 九坤投资专场竞赛