首页 > 其他分享 >Find a way bfs搜索 容易出错

Find a way bfs搜索 容易出错

时间:2023-07-11 16:32:25浏览次数:37  
标签:return int qx bfs KFC way const include Find


题目链接:

题意:给你一个图,图中有不能走的障碍物,和两人,以及n个(n>=1)KFC,现在要求找到其中一个KFC,让两个人人



走到这个KFC的时间总和最小;



#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include <map>
#include <algorithm>
#include <set>
using namespace std;
#define MM(a) memset(a,0,sizeof(a))
typedef long long ll;
typedef unsigned long long ULL;
const int mod = 1000000007;
const double eps = 1e-10;
const int inf = 0x3f3f3f3f;
const int big=50000;
ll max(int a,int b) {return a>b?a:b;};
ll min(int a,int b) {return a<b?a:b;};
char f[205][205];
int xa,ya,xb,yb;
int dx[5]={-1,1,0,0};
int dy[5]={0,0,1,-1};
int vis[205][205];
ll step[205][205];
ll total[205][205];
int n,m;
int legal(int x,int y)
{
if(x<0||y<0||x>=n||y>=m) return 0;
else if(vis[x][y]) return 0;
else if(f[x][y]=='#') return 0;
return 1;
}

void bfs(int x,int y)
{
memset(vis,0,sizeof(vis));
memset(step,inf,sizeof(step));
    step[x][y]=0;
    vis[x][y]=1;
queue<int> qx;
queue<int> qy;
    qx.push(x);qy.push(y);
while(qx.size())
{
int tx=qx.front();qx.pop();
int ty=qy.front();qy.pop();
for(int i=0;i<4;i++)
{
int rx=tx+dx[i];
int ry=ty+dy[i];
if(!legal(rx,ry)) continue;
        step[rx][ry]=step[tx][ty]+1;
        vis[rx][ry]=1;
        qx.push(rx);qy.push(ry);
}
}
}
int main()
{
while(~scanf("%d %d",&n,&m))
{
for(int i=0;i<n;i++)
{
scanf("%s",f[i]);
for(int j=0;j<m;j++)
if(f[i][j]=='M')
{xa=i;ya=j;}
else if(f[i][j]=='Y')
{xb=i;yb=j;}
}
//cout<<xa<<" "<<ya<<" "<<xb<<" "<<yb<<endl;
memset(total,0,sizeof(total));
bfs(xa,ya);

for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
// cout<<step[i][j]<<endl;
                  total[i][j]+=step[i][j];
}
bfs(xb,yb);
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
              total[i][j]+=step[i][j];

ll ans=inf;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
if(f[i][j]=='@')
if(total[i][j]<inf)
                  ans=min(ans,total[i][j]);
//printf("%d\n",total[i][j]);
}
printf("%lld\n",ans*11);
}
return 0;
}



这道题本来没什么的!!但是有个很恶心的坑点,就是并不是每个KFC都可以达到的,,所以将step初始化为0就错了(



因为这样初始化为0的话,如果两个人,都不能到达这个KFC,那么最终total读取的值就为0,也就是这个两个人都无法达到



的点输出总的时间是0.。。。。。。)

标签:return,int,qx,bfs,KFC,way,const,include,Find
From: https://blog.51cto.com/u_16185524/6689487

相关文章

  • 广度优先搜索(BFS)
    广度优先搜索(BFS)点亮所有的灯BFS的方法非连通图的广度优先遍历算法实现按广度优先搜索遍历连通图GBFS算法效率分析DFS和BFS算法效率比较空间复杂度相同,都是O(n)(借助栈和队列)时间复杂度与储存结构(邻接矩阵或邻接表)有关,而与搜索路径无关.......
  • xtrabackup 恢复报错:Assertion failure: log0files_finder.cc:322:format >= Log_form
     2023-07-10T15:33:46.614144+08:000[Note][MY-012204][InnoDB]Scanning'./'2023-07-10T15:33:46.647712+08:000[Note][MY-012208][InnoDB]CompletedspaceIDcheckof229files.2023-07-10T15:33:46.648265+08:000[Note][MY-012955][InnoDB]Ini......
  • Spring Cloud Gateway 设置全局接口访问日志
    SpringCloudGateway设置全局接口访问日志虽然网关只做转发,但是对于每个转发的请求,我们都希望能够在日志中打印出请求的信息,网上版本很多,踩了很多坑,目前没找到完美的解决方案,最后我这个应该是大成版。希望对大家有用。先贴代码,再说遇到什么坑吧。/***@authorchenzhangx*@d......
  • c语言刷dfs和bfs合集(含回溯)
    目录1.dfs和bfs区别,解决不同的问题2.bfs3.dfs1.dfs和bfs区别,解决不同的问题通常来说,BFS适用于求最短路径,DFS用来解决最长匹配、连通性这些问题比较方便【例1】1091.二进制矩阵中的最短路径链接1:https://leetcode.cn/problems/shortest-path-in-binary-matrix/solution/......
  • 记一次扯dan的错误feign.FeignException$NotFound: status 404 reading UserFeign#fin
    feign.FeignException$NotFound:status404readingUserFeign#findByPage()atfeign.FeignException.clientErrorStatus(FeignException.java:165)~[feign-core-10.4.0.jar:na]atfeign.FeignException.errorStatus(FeignException.java:141)~[feign-core-10.4.0.jar:na......
  • 在 Spring Boot 中使用 Dataway 配置数据查询接口
     Dataway介绍Dataway是基于DataQL服务聚合能力,为应用提供的一个接口配置工具。使得使用者无需开发任何代码就配置一个满足需求的接口。整个接口配置、测试、冒烟、发布。一站式都通过Dataway提供的UI界面完成。UI会以Jar包方式提供并集成到应用中并和应用共享同......
  • Paper Reading: A three-way decision ensemble method for imbalanced data oversamp
    目录研究动机文章贡献预备知识构造覆盖算法三向决策本文方法基于CCA的三向决策模型CTD集成实验结果数据集实验设置与过采样的比较显著性检验优点和创新点PaperReading是从个人角度进行的一些总结分享,受到个人关注点的侧重和实力所限,可能有理解不到位的地方。具体的细节还需......
  • Element-plus按需导入报错:Error: Cannot find module 'node:module'
    1.问题vue3项目使用ElementPlus组件库,配置按需导入:首先安装unplugin-vue-components和unplugin-auto-import这两款插件npminstall-Dunplugin-vue-componentsunplugin-auto-import然后按照文档在配置文件中进行相关配置;因为更改了配置文件,所以得重新启动项目--......
  • Gateway网关
    1.SpringCloudGatewaySpringCloudGateway作为SpringCloud生态系统中的网关,目标是替代NetflixZuul,其不仅提供统-的路由方式,并且还基于Filter链的方式提供了网关基本的功能。目前最新版SpringCloud中引用的还是Zuul1.x版本,而这个版本是基于过滤器的,是阻塞10,不支持长......
  • cannot find view for viewmodel caliburn micro
    在用Caliburn.Micro使用官方的例子,当天还是可以运行出来界面如下: 但是隔天去公司后一直运行显示找不到shellviewmodel百度显示,Caliburn.Micro对命名规范特别的严格。又重新写了一个新项目,还是出了问题无解,步骤都是一样的。最后的解决办法是重新开了一个新的WPF项目,将项目的......