Acwing2024蓝桥杯BFS

AcWing 1355. 母亲的牛奶

bfs: 

#include<iostream>
#include<queue>
using namespace std;
const int N=21;
int A,B,C;
bool flag[N][N][N];
struct node{
    int a,b,c;
};
queue<node>q;
void check(int a,int b,int c){
    if(!flag[a][b][c]){
        q.push({a,b,c});
        flag[a][b][c]=1;
    }
}
void bfs(){
    q.push({0,0,C});
    flag[0][0][C]=1;
    while(!q.empty()){
        auto t=q.front();
        q.pop();
        int a=t.a,b=t.b,c=t.c;
        check(a-min(a,B-b),min(a+b,B),c);
        check(a-min(a,C-c),b,min(a+c,C));
        check(min(a+b,A),b-min(b,A-a),c);
        check(a,b-min(b,C-c),min(c+b,C));
        check(min(a+c,A),b,c-min(c,A-a));
        check(a,min(b+c,B),c-min(c,B-b));
    }
    return ;
}
int main(){
    cin>>A>>B>>C;
    bfs();
    for(int c=0;c<=C;c++){
        for(int b=0;b<=B;b++){
            if(flag[0][b][c]){
                cout<<c<<" ";
                break;
            }
        }
    }
    return 0;
}

dfs:

#include<iostream>
using namespace std;
const int N=21;
int A,B,C;
bool flag[N][N][N];
void dfs(int a,int b,int c){
    if(flag[a][b][c]) return;
    flag[a][b][c]=1;
    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));
    return ;
}
int main(){
    cin>>A>>B>>C;
    dfs(0,0,C);
    for(int c=0;c<=C;c++){
        for(int b=0;b<=B;b++){
            if(flag[0][b][c]){
                cout<<c<<" ";
                break;
            }
        }
    }
    return 0;
}


AcWing 844. 走迷宫

#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
const int N=110;
int n,m;
typedef pair<int,int>pii;
int mapp[N][N],d[N][N];
int bfs(){
    memset(d,-1,sizeof d);
    d[1][1]=0;
    queue<pii>q;
    q.push({1,1});
    int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
    while(q.size()){
        auto t=q.front();
        q.pop();
        for(int i=0;i<4;i++){
            int x=t.first+dx[i],y=t.second+dy[i];
            if(x>=1&&x<=n&&y>=1&&y<=m&&d[x][y]==-1&&mapp[x][y]==0){
                d[x][y]=d[t.first][t.second]+1;
                q.push({x,y});
            }
        }
    }
    return d[n][m];
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>mapp[i][j];
    cout<<bfs()<<endl;
    return 0;
}


AcWing 845. 八数码

STL:unordered_map+bfs:

#include<iostream>
#include<unordered_map>
#include<queue>
using namespace std;
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
int bfs(string startt){
    string last="12345678x";//目标转态
    queue<string>q;
    //将字符串和数字联系在一起,字符串表示状态,数字表示距离
    unordered_map<string,int>d;
    //初始化
    q.push({startt});
    d[startt]=0;
    while(!q.empty()){
        auto t=q.front();//记录转态
        q.pop();
        int dist=d[t];//记录距离
        if(t==last) return dist;///终止状态
        //查找x在字符串中的下标,后转换为在矩阵中的坐标
        int k=t.find('x');
        int x=k/3,y=k%3;
        for(int i=0;i<4;i++){
            int xx=x+dx[i],yy=y+dy[i];
            if(xx>=0&&xx<3&&yy>=0&&yy<3){
                swap(t[k],t[xx*3+yy]);//交换,得到下一种状态
                if(!d.count(t)){//如果当前状态是第一次遍历,记录距离,入队
                    d[t]=dist+1;
                    q.push({t});
                }
                swap(t[k],t[xx*3+yy]);//还原状态
            }
        }
    }
    return -1;
}
int main(){
    string s;
    for(int i=0;i<9;i++){
        char ch;
        cin>>ch;
        s+=ch;
    }
    cout<<bfs(s)<<endl;
    return 0;
}


AcWing 1233. 全球变暖(第九届省赛)

这题在这篇文章里有具体写: 

三.搜索与图论(未完结)-CSDN博客

#include<iostream>
using namespace std;
const int N=1005;
char a[N][N],b[N][N];
int n,res,ans;
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
void dfs_all(int x,int y){
    b[x][y]='.';
    if(b[x-1][y]=='.'&&x-1>=0&&x-1<n&&y>=0&&y<n){
        if(b[x][y+1]=='.'&&x>=0&&x<n&&y+1>=0&&y+1<n){
            if(b[x+1][y]=='.'&&x+1>=0&&x+1<n&&y>=0&&y<n){
                if(b[x][y-1]=='.'&&x>=0&&x<n&&y-1>=0&&y-1<n){
                    return ;
                }
            }
        }
    }
    for(int i=0;i<4;i++){
        int xx=x+dx[i],yy=y+dy[i];
        if(b[xx][yy]=='#'){
            dfs_all(xx,yy);
        }
    }
}
void dfs_rest(int x,int y){
    a[x][y]='.';
    if(a[x-1][y]=='.'&&x-1>=0&&x-1<n&&y>=0&&y<n){
        if(a[x][y+1]=='.'&&x>=0&&x<n&&y+1>=0&&y+1<n){
            if(a[x+1][y]=='.'&&x+1>=0&&x+1<n&&y>=0&&y<n){
                if(a[x][y-1]=='.'&&x>=0&&x<n&&y-1>=0&&y-1<n){
                    return ;
                }
            }
        }
    }
    for(int i=0;i<4;i++){
        int xx=x+dx[i],yy=y+dy[i];
        if(a[xx][yy]=='*'||a[xx][yy]=='#'){
            dfs_rest(xx,yy);
        }
    }
}
int main(){
    cin>>n;
    for(int i=0;i<n;i++) for(int j=0;j<n;j++) {cin>>a[i][j];b[i][j]=a[i][j];}
    for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(b[i][j]=='#') {dfs_all(i,j);res++;}
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            if(a[i][j]=='.'){
                for(int k=0;k<4;k++){
                    int x=i+dx[k],y=j+dy[k];
                    if(a[x][y]=='#') a[x][y]='*';
                }
            }
        }
    }
    for(int i=0;i<n;i++) for(int j=0;j<n;j++) if(a[i][j]=='#') {dfs_rest(i,j);ans++;}
    cout<<res-ans<<endl;
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024第九届数维杯数学建模论文模板(内附LaTeX+Word)

一年一度的2024年第九届数维杯国赛报名进行中&#xff01;相信很多同学们已经摩拳擦掌蓄势待发了&#xff01; 经历三天比赛&#xff0c;最后提交的论文就是最终答卷&#xff0c;那么一篇数模论文&#xff0c;包括哪些内容呢&#xff1f; 一篇完整的数模论文&#xff0c;包括…

【初阶数据结构】单链表经典OJ题

目录标题 原题展现题目解析代码展现1.创建新节点2.拷贝random指针3.将新节点尾插 原题展现 该题是力扣上的第138题&#xff0c;题目链接如下&#xff1a;随机链表的复制。 题目解析 我们发现这个链表和一般的链表存在着一点点区别&#xff0c;那就是每个节点多了一个random指…

遥控挖掘机之ESP8266调试心得(1)

ESP8266调试心得 1. 前言2.遇到的问题2.1 ESP8266模块建立TCP连接时候报错2.2 指令异常问题 3. 更新ESP8266固件3. ESP8266的部分AT指令3. 连接步骤3.1 模块与电脑连接3.2.1 电脑上的设置3.2.2 ESP8266模块作为客户机&#xff08;TCP Cilent&#xff09;的设置步骤 3.2 模块与模…

Python深度学习基于Tensorflow(3)Tensorflow 构建模型

文章目录 数据导入和数据可视化数据集制作以及预处理模型结构低阶 API 构建模型中阶 API 构建模型高阶 API 构建模型保存和导入模型 这里以实际项目CIFAR-10为例&#xff0c;分别使用低阶&#xff0c;中阶&#xff0c;高阶 API 搭建模型。 这里以CIFAR-10为数据集&#xff0c;C…

SparkStructuredStreaming状态编程

spark官网关于spark有状态编程介绍比较少&#xff0c;本文是一篇个人理解关于spark状态编程。 官网关于状态编程代码例子: spark/examples/src/main/scala/org/apache/spark/examples/sql/streaming/StructuredComplexSessionization.scala at v3.5.0 apache/spark (github…

智能评估时代:SurveyKing开源问卷系统YYDS

最近有同事在设计问卷系统&#xff0c;我碰巧在 GitHub 上发现了一个开源的问卷/考试系统&#xff0c;觉得它非常不错&#xff0c;给他推荐了下。今天我打算和家人们分享一下这个发现。 项目介绍 官方网站&#xff1a;https://surveyking.cn/ github地址&#xff1a;https://…

springboot整合websocket,超简单入门

springBoot整合webSocket&#xff0c;超简单入门 webSocket简洁 WebSocket 是一种基于 TCP 协议的全双工通信协议&#xff0c;它允许客户端和服务器之间建立持久的、双向的通信连接。相比传统的 HTTP 请求 - 响应模式&#xff0c;WebSocket 提供了实时、低延迟的数据传输能力。…

数据库(MySQL)基础:约束

一、概述 1.概念&#xff1a;约束是作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据。 2.目的&#xff1a;保证数据库中数据的正确、有效性和完整性。 3.分类 约束描述关键字非空约束限制该字段的数据不能为nullnot null唯一约束保证该字段的所有数据都是唯一…

QX---mini51单片机学习---(6)独立键盘

目录 1键盘简绍 2按键的工作原理 3键盘类型 4独立键盘与矩阵键盘的特点 5本节相关原理图 6按键特性 7实践 1键盘简绍 2按键的工作原理 内部使用轻触按键&#xff0c;常态按下按键触点才闭合 3键盘类型 编码键盘与非编码键盘 4独立键盘与矩阵键盘的特点 5本节相关原理…

硬性清空缓存的方法

前端发布代码后&#xff0c;我们是需要刷新页面再验证的。有时候仅仅f5 或者ctrlshiftdelete快捷键仍然有历史缓存&#xff0c;这时可以通过下面的方法硬性清空缓存。 以谷歌浏览器为例&#xff0c;打开f12&#xff0c;右键点击刷新按钮&#xff0c;选择【清空缓存并硬性加载】…

计算机网络5——运输层2TCP原理

文章目录 一、传输控制协议 TCP 概述1、TCP最主要的特点2、TCP的连接 二、可靠传输的工作原理1、停止等待协议1&#xff09;无差错情况2&#xff09;出现差错3&#xff09;确认丢失和确认迟到4&#xff09;信道利用率 2、连续 ARQ协议 三、TCP 报文段的首部格式 一、传输控制协…

代码审计-PHP模型开发篇动态调试反序列化变量覆盖TP框架原生POP链

知识点 1、PHP审计-动态调试-变量覆盖 2、PHP审计-动态调试-原生反序列化 3、PHP审计-动态调试-框架反序列化PHP常见漏洞关键字 SQL注入&#xff1a; select insert update delete mysql_query mysqli等 文件上传&#xff1a; $_FILES&#xff0c;type"file"&…

Kafka 执行命令超时异常: Timed out waiting for a node assignment

Kafka 执行命令超时异常&#xff1a; Timed out waiting for a node assignment 问题描述&#xff1a; 搭建了一个kafka集群环境&#xff0c;在使用命令行查看已有topic时&#xff0c;报错如下&#xff1a; [rootlocalhost bin]# kafka-topics.sh --list --bootstrap-server…

Vue自定义封装音频播放组件(带拖拽进度条)

Vue自定义封装音频播放组件&#xff08;带拖拽进度条&#xff09; 描述 该款自定义组件可作为音频、视频播放的进度条&#xff0c;用于控制音频、视频的播放进度、暂停开始、拖拽进度条拓展性极高。 实现效果 具体效果可以根据自定义内容进行位置调整 项目需求 有播放暂停…

51单片机软件环境安装

keli5的安装 把CID放到破解程序中 破解程序会给一串数字然后填到那个框中 驱动程序的安装 安装完了以后 设备管理器会出现这个 同时c盘会出现这个文件夹

巨量千川的投放技巧,一站式全自动千川投流工具(抖音玩家必备)

随着抖音平台的快速发展&#xff0c;越来越多的品牌和广告商意识到抖音的潜力&#xff0c;并希望能够通过投放广告来获取更多的曝光和用户参与。在这个过程中&#xff0c;巨量千川成为了抖音玩家必备的一站式全自动千川投流工具&#xff0c;为广告商提供了投放技巧&#xff0c;…

word-快速入门

1、熟悉word界面 2、word排版习惯 3、排版文本基本格式 1、word界面 选项卡 功能组 点击功能组右下角小三角可以开启完整功能组&#xff0c;获得启动器 软件右上角有功能显示折叠按钮 2、排版好习惯 &#xff08;1&#xff09;随时保存 &#xff08;2&#xff09;规范文件命…

408算法题专项-2015

题目&#xff1a; 分析&#xff1a;时间复杂度尽可能高效&#xff0c;提示可能存在一种空间换时间的算法 思路一&#xff1a;空间换时间 思考&#xff1a;开数组储存结点数据域&#xff0c;对于只出现一次或多次出现第一次的&#xff0c;保留&#xff0c;对于多次出现的&…

流程详解!2024年成都市发明专利申请流程及各阶段操作要点

一、受理阶段 时间期限&#xff1a; 电子申请2天内&#xff0c;纸质申请当天现场提交&#xff0c;邮寄约为半月。 申请人&#xff1a; 1. 委托专利代理机构&#xff0c;签订委托代理协议和保密协议等&#xff1b; 2. 提供原始技术资料和个人以及单位信息等&#xff1b; 3…

片冰机工作原理

片冰机工作原理 1、制冰用的水需要加盐(行话叫做加药)至于多少量。看制冰量多少调制泵(柱塞泵)自动调整。 2、制冰机主体分两腔体外腔体内盘的一定密度的铜管。专业术语叫(蒸发腔)就是俗话讲的制冷的东西。 3、外腔体内是一个很规则的圆不锈钢腔体&#xff0c;中心有一三叶刮…
最新文章