首页 > 其他分享 >搜索与图论

搜索与图论

时间:2024-03-18 23:34:00浏览次数:17  
标签:图论 min int dfs bfs vis 搜索 ans

DFS

dfs,即深度优先搜索,主要运用递归的思想。会将一种可能性搜索完的情况下再开始搜索下一种可能性。

acwing 1355母亲的牛奶

给你三个不同大小的桶,一开始只有c桶装满牛奶,三个桶来回倒,求问在a桶空着的情况下c桶可能有多少牛奶,答案升序输出
数据很小,我们考虑每种情况而并非考虑每个桶,开一个三维数组记录是否出现过相同情况,相同则return
并且由于我们的vis数组考虑的是单独情况而非是否选某个点,因此不需要回溯(这样说有点歧义,总之就是不用讲vis数组变为0)

#include<bits/stdc++.h>
using namespace std;
int A,B,C;
struct node
{
	int a;
	int b;
	int c;
};
int vis[30][30][30];
int avis[30];
int ans[30],cnt=0;
void dfs(int a,int b,int c)
{
	if(vis[a][b][c]) return;
	vis[a][b][c]=1;
	if(!avis[c]&&a==0) avis[c]=1,ans[++cnt]=c;
	dfs(a-min(a,B-b),min(a+b,B),c);
    dfs(a-min(a,C-c),b, min(a+c,C));
    dfs(min(a+b,A),b-min(b,A-a),c);
    dfs(a,b-min(b,C-c),min(c+b,C));
    dfs(min(a+c,A),b,c-min(c,A-a));
    dfs(a,min(b+c,B),c-min(c,B-b));
}
int main()
{
	cin>>A>>B>>C;
	dfs(0,0,C);
	sort(ans+1,ans+cnt+1);
	for(int i=1;i<=cnt;i++)
	printf("%d ",ans[i]);
	return 0;
}

BFS

又称广度优先搜索,和bfs思想上的区别主要在于bfs是对于每种情况,会将它后续可能的下一步情况一一进行处理。而dfs则是选中下一步情况的某一个一直搜直到搜出结果再进行另一种情况。(也就是bfs每次都能获得每种情况的每一步结果,而dfs要先得到一种情况的结果再进行下一种情况)。这样的特性使得bfs适合做最短路。因为所有情况都是同步进行的,那么先达到目标点的情况就是最短的情况。
而在实现方法上,bfs采用队列的实现方法,每次发现新的可行方案时将该情况放到队尾,也就是说对于一种情况,它的所有下一步情况都会被依次放进队列,这样就能保证他们能依次被处理。

acwing 1355母亲的牛奶

没错,还是这题,写了bfs版本的

#include<bits/stdc++.h>
using namespace std;
struct node
{
	int a;
	int b;
	int c;
};
queue<node> q;
int A,B,C;
bool vis[25][25][25];
int vans[25];
int ans[50],cnt=0;
void inst(int a,int b,int c)
{
	if(!vis[a][b][c]) 
	{
		q.push({a,b,c});
		vis[a][b][c]=true;
	}
	if(!vans[c]&&a==0) 
	{
		ans[++cnt]=c;
		vans[c]=1;
	}
}
void bfs()
{
	q.push({0,0,C});
	vis[0][0][C]=1;
	while(!q.empty())
	{
		node h=q.front();
		q.pop();
		int a=h.a,b=h.b,c=h.c;
		inst(a-min(a,B-b),min(a+b,B),c);
        inst(a-min(a,C-c),b, min(a+c,C));
        inst(min(a+b,A),b-min(b,A-a),c);
        inst(a,b-min(b,C-c),min(c+b,C));
        inst(min(a+c,A),b,c-min(c,A-a));
        inst(a,min(b+c,B),c-min(c,B-b));
	}
}
int main()
{
	cin>>A>>B>>C;
	bfs();
	sort(ans+1,ans+cnt+1);
	for(int i=1;i<=cnt;i++)
	printf("%d ",ans[i]);
	return 0;
}

标签:图论,min,int,dfs,bfs,vis,搜索,ans
From: https://www.cnblogs.com/miku-dayo/p/18081791

相关文章

  • BFS记忆化搜索---标记
    迷宫(洛谷)题目描述给定一个\(N\timesM\)方格的迷宫,迷宫里有\(T\)处障碍,障碍处不可通过。在迷宫中移动有上下左右四种方式,每次只能移动一个方格。数据保证起点上没有障碍。给定起点坐标和终点坐标,每个方格最多经过一次,问有多少种从起点坐标到终点坐标的方案。输入格式第......
  • 带有点选和搜索功能的百度地图
    项目中用到了一个地图功能,可以点选和搜索,我选用了百度地图,实现效果如下,参考百度地图官方api修改以适应自己的项目就可以,仅供参考,有问题请留言;1.首先在utils里面新建一个js文件baiduMap exportconstimportBMapGL=()=>newPromise((resolve,reject)=>{//ak......
  • Win10系统还原后,单击Windows搜索图标没反应
    前言我的笔记本是Win10,操作系统内部版本是:19045.4170。背景前几天电脑中毒了,在桌面生成了一个mouselock.exe的一个流氓软件,会自动把笔记本锁住。原因可能是因为把Windows自带的杀毒软件关闭了,也有可能是被那个流氓软件给关闭的。我开启Windows自带的杀毒软件,就检测出那个软件是......
  • 2733: 【搜索】【广度优先】 马遍历棋盘
    题目描述有一个n*m的棋盘(1<n,m<=400),在某个点上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步输入一行四个数据,棋盘的大小和马的坐标输出一个n*m的矩阵,代表马到达某个点最少要走几步(左对齐,宽5格,不能到达则输出-1)样例输入4411样例输出0325......
  • 阿里巴巴中国站按关键字搜索工厂数据 API
    公共参数名称类型必须描述keyString是免费申请调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等]cacheString否[yes,no]默认yes,将调用缓存的数据,速度比较快result_typeString否[j......
  • 力扣---验证二叉搜索树---前根/中根/后根遍历
     题目解析参考:验证二叉搜索树_哔哩哔哩_bilibili一开始做呢,就跟这位老兄一样:因为没有考虑到5和3的比较接下来走入整体:先根遍历解法:首先 每个点其实都有范围,比如根节点的范围在(-INF,INF),就拿上面图片举例子,4这个节点的范围应该是(-INF,5),所以先序遍历,我们要先比较根......
  • 代码随想录算法训练营第23天|669. 修剪二叉搜索树|108.将有序数组转换为二叉搜索树|53
    代码随想录算法训练营第23天|669.修剪二叉搜索树|108.将有序数组转换为二叉搜索树|538.把二叉搜索树转换为累加树|总结篇669.修剪二叉搜索树这道题目比较难,比添加增加和删除节点难的多,建议先看视频理解。题目链接/文章讲解:https://programmercarl.com/0669.%E4%BF%A......
  • 自定义edge地址搜索栏
    在bing上搜索计算机相关内容,前两页csdn能占十之七八九,内容能参考的十之一二,毕竟还能看,这回csdn呱噪地把顶部广告栏直接加到页面的三有其一,翻看内容很不适,意思就是不登录就别看了,没辙,还是得屏蔽。因之前就屏蔽过一次,重装系统后没加上,这回照着旧路子再走一遍,edge点设置->隐私,搜索和......
  • Linux vscode右上角布局按钮显示 & 顶部不显示搜索栏
    以下设置均在ubuntu上测试,windows可能类似。开启或关闭右上角布局按钮:勾选layoutcontrol同时注意,window.titleBarStyle需要设置为custom才会生效。关闭顶部中间的搜索框中间有个很占地方的搜索框设置里搜索commandcenter,取消勾选即可。(同样,titlebarstyle需要设置为cust......
  • Github高级搜索【指定日期区间,星星数,用户仓库名多条件精确搜索】
    小伙伴们号,欢迎关注,一起学习,无限进步GitHub高级搜索允许用户使用多种条件来精确查找所需的仓库、文件和代码。以下是对GitHub高级搜索的最全、详细总结说明:文章目录关键字搜索仓库名搜索用户搜索组织搜索文件搜索语言搜索星星数搜索更新时间搜索授权搜索组合搜索排......