T1同昨(我看到题目就粘上昨天的代码,结果题还没发我就A了hhhhhh)

T2一开始想用深搜,结果T掉了。。。只好改广搜,就挺令人头大

点击查看宽广对比
#include<bits/stdc++.h>
using namespace std;
int sum,n;
int a[50][50];
bool vis[50][50];
void dfs(int x,int y) {
if(x>n+1||y>n+1||x<0||y<0)return;
if(a[x][y])return;
a[x][y]=2;
vis[x][y]=1;
dfs(x+1,y);
dfs(x,y+1);
dfs(x-1,y);
dfs(x,y-1);
return;
}
int main() {
scanf("%d",&n);
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++) {
scanf("%d",&a[i][j]);
if(a[i][j]==1)sum++;
}
}
dfs(0,0);//横纵坐标
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++) {
if(a[i][j]==1) printf("1 ");
if(a[i][j]==2) printf("0 ");
if(a[i][j]==0) printf("2 ");
}
printf("\n");
}
return 0;
}
点击查看宽广对比
#include<bits/stdc++.h>
using namespace std;
char a[1010][1010];
int sum,mi;
int gox[4]= {1,-1,0,0},goy[4]= {0,0,1,-1},h[1000001][4];
int n,qx,qy,zx,zy;
int bfs(int x,int y) {
int tail=1,head=0,xx,yy;
h[1][1]=x;
h[1][2]=y;
h[1][3]=0;
while(tail>head) {
head++;
for(int i=0; i<4; i++) {
xx=h[head][1]+gox[i];
yy=h[head][2]+goy[i];
if(xx==zx&&yy==zy) {
return h[head][3]+1;
}
if(xx>=1&&yy>=1&&xx<=n&&yy<=n&&a[xx][yy]=='0') {
tail++;
a[xx][yy]='1';
h[tail][1]=xx;
h[tail][2]=yy;
h[tail][3]=h[head][3]+1;
}
}
}
}
int main() {
cin>>n;
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
cin>>a[i][j];
cin>>qx>>qy>>zx>>zy;
printf("%d",bfs(qx,qy));
return 0;
}

广搜流读入都比深搜跑得快无数倍,他优秀就优秀在找到的第一个头就一定是最优路径=_=

主要是我深搜和广搜写的几乎一摸一样,所以经常就忽略了广搜优秀的时间

对于T3到没什么,坑在于我习惯性地在bfs中while+for+if但这里注意即可能是竖直变水平也有可能是水平变竖直

so,这里代码实现的时候最后判是否合法用 while

易错代码
while(tail>=head)
{
head++;
for(int i=0;i<4;i++)
{
x=t[head][1]+gox[i];
y=t[head][2]+goy[i];
while(x>=1&&x<=n&&y>=1&&y<=m&&a[x][y]==0)//这里!!!!
{
if(x==ex&&y==ey)
{
printf("%d",t[tail][3]);
return;
}
a[x][y]=1;
tail++;
t[tail][1]=x;
t[tail][2]=y;
t[tail][3]=t[head][3]+1;
x+=gox[i];
y+=goy[i];
}
}
}

对于T4,核心代码与T3同(但要注意n,m的长宽是反的),重点在于复习次数未知的读入

点击查看代码
int main()
{
char x;
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
x=getchar();
for(int j=1;j<=n;j++)
{
x=getchar();
if(x==' ')a[i][j]=0;
else a[i][j]=1;
}
}
scanf("%d%d%d%d",&by,&bx,&ey,&ex);
while(bx||by||ex||ey)
{
a[ex][ey]=0;
bfs();
a[ex][ey]=1;
scanf("%d%d%d%d",&by,&bx,&ey,&ex);
}
return 0;
}

年前最后一次2022.1.28_RP++的更多相关文章

  1. CA周记 2022年的第一课 - Rust

    现代编程语言有很多,在我的编程学习里面有小学阶段的 LOGO , 中学阶段的 Pascal ,也有大学阶段的 C/C++.Java..NET,再到工作的 Objective-C .Swift.Go.K ...

  2. 罗振宇2022"时间的朋友"跨年演讲

    罗振宇2022"时间的朋友"跨年演讲 行就行,不行我再想想办法. 原来,还能这么干! 堆资源不是解决问题的唯一道路,还是那句话:"处于困境中的人往往只关注自己的问题.而解 ...

  3. 秋招如何抱佛脚?2022最新大厂Java面试真题合集(附答案

    2022秋招眼看着就要来了,但是离谱的是,很多同学最近才想起来还有秋招这回事,所以纷纷临时抱佛脚,问我有没有什么快速磨枪的方法, 我的回答是:有! 说起来,临阵磨枪没有比背八股文更靠谱的了,很多人对这 ...

  4. 2022年windows的Visual Studio 安装后初始配置

    目录 前言 1.开发环境设置,修改存储空间 打开编译器,选择工具-->导入和导出设置-->重置所有设置-->下一步 修改盘符-->下一步->选择环境->完成 2.主 ...

  5. SQL Server 2008 R2——当前日期下,一年前数据的统计值

    =================================版权声明================================= 版权声明:原创文章 谢绝转载  请通过右侧公告中的“联系邮 ...

  6. 使用C#把发表的时间改为几年前,几个月,几天前,几小时前,几分钟前,或几秒前

    我们在评论中往往会看到多少天前,多少小时前. 实现原理:现在时间-过去时间 得到的时间差来做比较 下面我定义了一个Helper类,大家直接引用即可,参数就是时间差,注意时间差类型是TimeSpan类型 ...

  7. PHP 显示文章发布日期 一小时前 一天前 一月前 一年前

    <?PHP /*** 传入日期格式或时间戳格式时间,返回与当前时间的差距,如1分钟前,2小时前,5月前,3年前等* @param string or int $date 分两种日期格式" ...

  8. 从下往上看--新皮层资料的读后感 第三部分 70年前的逆向推演- 从NN到ANN

    第三部分 NN-ANN 70年前的逆向推演 从这部分开始,调整一下视角主要学习神经网络算法,将其与生物神经网络进行横向的比较,以窥探一二. 现在基于NN的AI应用几乎是满地都是,效果也不错,这种貌似神 ...

  9. 多年前写的文本框扩展控件(有ValueChanging事件等),已放github

    本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 阅读目录 介绍 起因 代码 使用 GitHub ...

随机推荐

  1. Python3.7 发送邮件 报‘[WinError 10061] 由于目标计算机积极拒绝,无法连接’错误的解决方法

    背景: 最近在练习Python 的邮件发送功能 照着教程写了一个简单的demo 结果运行时报如下错误:[WinError 10061] 由于目标计算机积极拒绝,无法连接. 如图: 解决路径如下: St ...

  2. RootersCTF2019 I ♥ Flask

    最近也是一直在做ssti方面的题目,我发现了两款比较好用的工具,一个是arjun(用来探测参数),另一个是Tplmap(用来探测ssti漏洞),我们这里以一道题目为例来演示一下 题目 我们拿到题目 分 ...

  3. Bootstrap实战 - 响应式布局

    一.介绍 响应式布局就是一个网站能够兼容多个终端,而不是为每个终端做一个特定的版本.这个概念是为解决移动互联网浏览而诞生的. 导航栏与轮播在大部分网站的头部占很高的比重,特别是导航栏,扮演着网站地图的 ...

  4. 将待授权的数据库的dbowner指派给该用户

    USE 数据库goEXEC dbo.sp_changedbowner N'账号'

  5. (2)用Micropython将ESP32数据上云

    之前我们尝试过直接把LED点亮并且闪烁. 今天尝试一下将LED的开关状态上云,并可以通过云来进行数据下发. 数据要上云,首先开发板要联网. 首先我们会用 Python的network 库, 在netw ...

  6. vue学习6-if判断

        <p v-if="weather=='sun'">去公园</p>     <p v-else-if="weather=='s'&qu ...

  7. golang中json格式化自定义日期格式

    go 的time.Time,在json序列化是默认 2006-01-02T15:04:05Z07:00 的格式,十分不便, encoding/json包在序列化和反序列化的时候分别调用encode.g ...

  8. 集合框架-工具类-Arrays-asList方法

    1 package cn.itcast.p3.toolclass.arrays.demo; 2 3 import java.util.ArrayList; 4 import java.util.Arr ...

  9. 由浅入深,66条JavaScript面试知识点

    前言 我只想面个CV工程师,面试官偏偏让我挑战造火箭工程师,加上今年这个情况更是前后两男,但再难苟且的生活还要继续,饭碗还是要继续找的.在最近的面试中我一直在总结,每次面试回来也都会复盘,下面是我这几 ...

  10. ARP链路追踪

    arp协议在TCP/IP模型中属于IP层(网络层),在OSI模型中属于链路层.arp协议即地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议.它可以解决同一个局域网内主机或路由器的IP地址 ...