蓝桥杯倒计时 36天-DFS练习

文章目录

  • 飞机降落
  • 仙境诅咒
  • 小怂爱水洼
  • 串变换

飞机降落

在这里插入图片描述
在这里插入图片描述
思路:贪心+暴搜。

#include<bits/stdc++.h>using namespace std;
const int N = 10;
int t,n;
//这题 N 比较小,可以用暴力搜搜复杂度是 T×N*N!
struct plane{int t,d,l;
}p[N];
bool vis[N];//用来记录每个飞机是否访问
bool dfs(int dep,int last){if(dep==n){//当枚举完所有飞机到叶子节点则说明有满足条件的情况。return true;//只要一个 true 所有都 true}for(int i=0;i<n;i++){//枚举每个飞机int t = p[i].t,d = p[i].d,l = p[i].l;if(!vis[i]&&t+d>=last){//没访问过并且上一架飞机将落后可以降落vis[i]=true;//标记访问if(dfs(dep+1,max(t,last)+l))return true;//需要判断极限条件是否成立vis[i]=false;//回溯还原}}return false;//只要一个 false 所有都 false
}int main( ){cin>>t;while(t--){cin>>n;for(int i=0;i<n;i++){cin>>p[i].t>>p[i].d>>p[i].l;}memset(vis, false, sizeof vis);//还原标志位if(dfs(0,0))puts("YES");else puts("NO");}return 0;
}

仙境诅咒

在这里插入图片描述
思路:图的 DFS

#include<bits/stdc++.h>
using namespace std;
int n,d;
const int N = 1e3+10;struct god{int x,y;
}gods[N];//输入每个神仙的坐标bool vis[N];//判断神仙是否中毒double dis(int i,int j){//求两个神仙间的欧式距离int x1 = gods[i].x,x2 = gods[j].x;int y1 = gods[i].y,y2 = gods[j].y;return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
//搜索以第 id 个中毒的神仙能感染周围哪些神仙
void dfs(int id){vis[id]=true;//标记第 id 个神仙中毒for(int i=0;i<n;i++){if(!vis[i]&&dis(id,i)<=d)dfs(i);//如果神仙没有搜索过,并且他在其他神仙的毒圈内,就需要以他为圆心进行搜索。}
}int main( ){cin>>n;for(int i=0;i<n;i++)cin>>gods[i].x>>gods[i].y;cin>>d;dfs(0);for(int i=0;i<n;i++)cout<<(vis[i]?"1":"0")<<'\n';return 0;
}

小怂爱水洼

在这里插入图片描述
在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
const int N = 1e2+5;
int n,m;
int vis[N][N],a[N][N];
typedef long long LL;
int dy[4]={0,1,0,-1};
int dx[4]={1,0,-1,0};
//在同一片水洼内搜索
void dfs(int x,int y,LL &sum){//保存新水洼的水量,并且设置已经访问过sum += 1ll*a[x][y];vis[x][y] = true;//向水洼四周搜索for(int i=0;i<=3;i++){int nx = dx[i]+x;int ny = dy[i]+y;//不能越界,不能访问过,并且要有水量,否则跳过该坐标if(nx<=0||nx>=n+1||ny<=0||ny>=m+1||!a[nx][ny]||vis[nx][ny])continue;dfs(nx,ny,sum);}
}
int main( ){cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];//输入矩阵}}long long result =0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){LL sum = 0;dfs(i,j,sum);//对每个大水洼进行求和,ij 是水洼坐标,sum 存每个大水洼的水量和result = max(result,sum);//result 是总的最大的水洼}}cout<<result;return 0;
}

串变换

在这里插入图片描述

在这里插入图片描述
思路:数据范围k 为 7 用暴搜做。

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>using namespace std;const int N = 25;//数组的最大条件
int n,k;//串的长度为 n,操作次数 k
string s,t;//源串和目的串
int op[N],x[N],y[N];//操作数和操作码
vector<int> path;//用来存操作次序(全排列)
bool st[N];//用来记录是否访问过
bool res;//用来记录最后答案void update(){//得到全排列的值进行操作看是否能得到目的串string str = s;for(int i=0;i<path.size();i++){int j = path[i];int a = op[j],b = x[j], c = y[j];if(a==1){str[b] = (str[b] - '0' + c) % 10 + '0';}else swap(str[b],str[c]);}res |= str==t;
}void dfs(int u)
{if (u == k + 1){update();return;}//全排列代码for (int i = 1; i <= k; ++ i )if (!st[i]){st[i] = true;path.push_back(i);dfs(u + 1);path.pop_back();st[i] = false;}//防止搜索一些值,叶节点没搜索到dfs(k + 1);
}
int main()
{cin >> n >> s >> t >> k;for (int i = 1; i <= k; ++ i )cin >> op[i] >> x[i] >> y[i];dfs(1);cout << (res? "Yes": "No") << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/525596.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STL空间配置器

参考《STL源码剖析-侯捷》一书 (SGI版本STL) 前置 六大组件 空间配置器实现 SGI版本的空间配置器有两个&#xff0c;一个名为allocator&#xff0c;一个名为alloc。前者符合部分标准&#xff0c;但效率不好&#xff0c;只是对operator new和operator delete进行了封装&#…

电动机工作原理图

电机&#xff08;俗称“马达”&#xff09;是指依据电磁感应定律实现电能转换或传递的一种电磁装置。它的主要作用是产生驱动转矩&#xff0c;作为用电器或各种机械的动力源。 电动机&#xff0c;转子置于旋转磁场中&#xff0c;在旋转磁场的作用下&#xff0c;获得一个转动力…

Spring学习 基础(三)MVC

5、Spring MVC 传统Web模式&#xff1a; Model:系统涉及的数据&#xff0c;也就是 dao 和 bean。View&#xff1a;展示模型中的数据&#xff0c;只是用来展示。Controller&#xff1a;处理用户请求都发送给 &#xff0c;返回数据给 JSP 并展示给用户。 随着 Spring 轻量级开发…

anaconda问题合集

目录 一. 万分注意 二. ImportError: DLL load failed while importing _ctypes: 找不到指定的模块。 1. 发生情况 2. 导致结果和解决方法 三. WARNING: A newer version of conda exists. 1. 在conda install 某库的时候 2. 解决方法 一. 万分注意 不要轻易使用 conda …

创作之树常青——我的创作纪念日

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

深入浅出计算机网络 day.1 概论④ 计算机网络的定义和分类

不要退却&#xff0c;要绽放魅力 我的心会共鸣 和你 —— 24.3.9 一、计算机网络的定义 计算机网络早期的一个最简单定义 现阶段计算机网络的一个较好的定义 二、计算机网络的分类 按交换方式分类 按使用者分类 按传输介质分类 按覆盖范围分类 按拓扑结构分类&#xff0c;可…

美食网页成品 HTML美食网页设计制作 前端美食网页开发 热门美食特产网页制作中国传统特色小吃-臭豆腐 6页面 美食主题 HTML5 带设计说明

美食网页成品 HTML美食网页设计制作 前端美食网页开发 热门美食特产网页制作 中国传统特色小吃-臭豆腐 6页面 美食主题 HTML5 带设计说明 http://www.yuanle.net.cn/anli/30/4138.html

Research Agent:具有解决基于大型文本语料库的复杂问题,具备深度多跳推理的能力

原文地址&#xff1a;https://towardsdatascience.com/the-research-agent-4ef8e6f1b741 2023 年 8 月 29 日 问题简介 在2021年&#xff0c;开始应对基于大量文本回答问题的挑战。在预训练transformers之前的时代&#xff0c;这个问题很难破解。 人工智能和大型预训练tran…

图像处理ASIC设计方法 笔记8 卷积计算芯片的结构

(一) P81 卷积芯片内部模板框图 该设计有两个数据通路:图像数据和模板数据。 图像数据是经过帧控制、实时图SPRAM(写控制、 SPRAM读控制、数据读控制)、计算单元; 模板数据是经过模板SPRAM、计算单元。 4.5.4运算单元像素寄存器控制 存储SPRAM写入的64bit数据,输出为…

这些AI智能写作软件都能满足你的写作需求

当前&#xff0c;AI写作软件在写作领域中呈现出蓬勃发展的趋势&#xff0c;这为有写作需求的人们带来了极大的便利&#xff0c;同时也让写作者们能够更高效、更便捷地进行创作。那么问题来了&#xff0c;有哪些ai写作软件比较好用呢&#xff1f;小编为您揭晓答案~ 爱制作AI写作…

HTML5:七天学会基础动画网页10

继续介绍3D转换: 3D转换:rotate3d 方法与说明 rrotateX(angle)otate3d(x,y,z,angle[角度]) 3D转换&#xff0c;正常取值0/1&#xff0c;0代表当前轴线不进行旋转&#xff0c;1反之&#xff0c;例:rotate3d(1,1,1,30deg)&#xff0c;代表三个轴线都要旋转30度 rotate3d(0…

C#与欧姆龙PLC实现CIP通讯

参考文档&#xff1a; 欧姆龙PLC使用-CSDN博客 CIP通讯介绍&#xff08;欧姆龙PLC&#xff09;-CSDN博客 使用NuGet添加引用&#xff1a;CIPCompolet 基础参考我的CIP协议介绍&#xff0c;默认TCP端口为&#xff1a;44818 类NXCompolet 类的功能可以在安装PLC开发软件后帮…