DFS&BFS
搜索的BFS,DFS
Happig丶
我的孤独,虽败犹荣
展开
-
POJ - 1040 Transportation(搜索)
题目链接一开始想写背包,然后发现不太一样,因为人们在中间可以下车。然后写了搜索也就是设dfs(int cur,int num,int sum)dfs(int ~~cur,int ~~num,int ~~sum)dfs(int cur,int num,int sum)为当前第curcurcur站,车上的人数为numnumnum,总价钱为sumsumsum。因为按车一站一站地原创 2020-07-18 21:47:10 · 236 阅读 · 0 评论 -
IDA*——迭代加深搜索 (UVa11212)
IDA*迭代加深搜索:从小到大枚举搜索深度上限maxd,每次执行只考虑深度不超过maxd的节点。只要解的深度有限,能够快速找到最优解其实设置深度上限就是为了剪枝,有的情况下每种情况都有上万个分支,最差情况下要得到最优解会非常慢,但是这些分支又是不可避免的,所以我们可以通过限制向下迭代的层数,逐渐放宽搜索区域知道找到结果那么IDA*问题的关键就是如何限制迭代的层数,换种说法是至少还要多少步才能...原创 2020-02-24 17:36:03 · 275 阅读 · 0 评论 -
回溯法——八皇后问题
八皇后问题在一个8×8的棋盘上放置8个皇后,使得他们不相互攻击。每个皇后的攻击范围是同行同列和同对角线,求出所有解的个数首先简化问题,如果符合要求放满8个皇后,那么肯定保证每一行和每一列有且仅有一个皇后。那么显然问题就变成了如何在一行或者一列放满8皇后。接着就可以转化为求符合要求的8的全排列,那么求全排列我们显然可以用dfs来解决既然是逐行放置的,那么皇后肯定不会横向攻击,因此只需要检查...原创 2020-02-19 23:11:21 · 788 阅读 · 0 评论 -
枚举子集
增量构造法此方法适合求包含n个元素{1-n}的所有子集思路:每一次选出一个元素放到集合中,函数开头遍历当前集合,后面每次从当前最小值向下递归构造子集int a[maxn],ans[maxn];int n;void print_subset(int cur){ //cur初始输入1 for(int i=1;i<cur;i++) printf("%d%c",ans[i],i=...原创 2020-02-19 17:54:00 · 440 阅读 · 0 评论 -
全排列及几种实现(DFS,STL)
全排列从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列公式:全排列数f(n)=n!(定义0!=1)例如1,2,3的全排列为共有3!=6种,按字典序从小到大为:1,2,31,3,22,1,32,3,13,1,23,2,1DFSDFS求全排列的思想是:把n个数建立成一个含有n个节点的无向图...原创 2020-02-09 18:49:03 · 413 阅读 · 0 评论 -
牛客算法周练——水题water(数论+n皇后位运算算法)
题目链接题目不难看懂,观察上述式子,给出了f(1)=1,f(2)=1,那么继续往后推几个,可以发现是斐波那契数列。因此对于上述式子如果x输入的x是斐波那契数的话,就直接求,方法详见传送门,对100之内的斐波那契数打表即可,因为第九十多个好像就到了1e18左右。如果该数不是斐波那契数,显然求n皇后问题,但是这里n最多到了13,普通的求解最多到12就跑不动了,因此使用位运算的算法打表即可(不会自...原创 2020-04-15 13:26:56 · 188 阅读 · 0 评论