年前最后一次2022.1.28_RP++
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++的更多相关文章
- CA周记 2022年的第一课 - Rust
现代编程语言有很多,在我的编程学习里面有小学阶段的 LOGO , 中学阶段的 Pascal ,也有大学阶段的 C/C++.Java..NET,再到工作的 Objective-C .Swift.Go.K ...
- 罗振宇2022"时间的朋友"跨年演讲
罗振宇2022"时间的朋友"跨年演讲 行就行,不行我再想想办法. 原来,还能这么干! 堆资源不是解决问题的唯一道路,还是那句话:"处于困境中的人往往只关注自己的问题.而解 ...
- 秋招如何抱佛脚?2022最新大厂Java面试真题合集(附答案
2022秋招眼看着就要来了,但是离谱的是,很多同学最近才想起来还有秋招这回事,所以纷纷临时抱佛脚,问我有没有什么快速磨枪的方法, 我的回答是:有! 说起来,临阵磨枪没有比背八股文更靠谱的了,很多人对这 ...
- 2022年windows的Visual Studio 安装后初始配置
目录 前言 1.开发环境设置,修改存储空间 打开编译器,选择工具-->导入和导出设置-->重置所有设置-->下一步 修改盘符-->下一步->选择环境->完成 2.主 ...
- SQL Server 2008 R2——当前日期下,一年前数据的统计值
=================================版权声明================================= 版权声明:原创文章 谢绝转载 请通过右侧公告中的“联系邮 ...
- 使用C#把发表的时间改为几年前,几个月,几天前,几小时前,几分钟前,或几秒前
我们在评论中往往会看到多少天前,多少小时前. 实现原理:现在时间-过去时间 得到的时间差来做比较 下面我定义了一个Helper类,大家直接引用即可,参数就是时间差,注意时间差类型是TimeSpan类型 ...
- PHP 显示文章发布日期 一小时前 一天前 一月前 一年前
<?PHP /*** 传入日期格式或时间戳格式时间,返回与当前时间的差距,如1分钟前,2小时前,5月前,3年前等* @param string or int $date 分两种日期格式" ...
- 从下往上看--新皮层资料的读后感 第三部分 70年前的逆向推演- 从NN到ANN
第三部分 NN-ANN 70年前的逆向推演 从这部分开始,调整一下视角主要学习神经网络算法,将其与生物神经网络进行横向的比较,以窥探一二. 现在基于NN的AI应用几乎是满地都是,效果也不错,这种貌似神 ...
- 多年前写的文本框扩展控件(有ValueChanging事件等),已放github
本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 阅读目录 介绍 起因 代码 使用 GitHub ...
随机推荐
- git 生成忽略文件
一.在.git的同级目录下打开git bash 二.在命令行输入 三.在生成的文件中添加忽略提交的文件夹名称 来自为知笔记(Wiz)
- POJ2115C Looooops
http://poj.org/problem?id=2115 k位储存特点,一旦溢出,那么就到第二个循环开始返回0重新计数.问题实际转化成a+cx=b(mod 2^k)跑多少圈能够重合.因为是k位无符 ...
- Typora+PicGo-Core实现图片自动上传gitee图床
说明: 使用gitee作为图床: 客户机为Mac M1: Typora版本:1.0.2 (5990). gitee配置步骤 需要拥有一个gitee账号,创建一个公有仓库用于存储图片,然后需要生成一个t ...
- 面试官: Flink双流JOIN了解吗? 简单说说其实现原理
摘要:今天和大家聊聊Flink双流Join问题.这是一个高频面试点,也是工作中常遇到的一种真实场景. 本文分享自华为云社区<万字直通面试:Flink双流JOIN>,作者:大数据兵工厂 . ...
- 互联网医疗行业PEST分析实践
前言 今年开始逐步切入产品与数据工作,完全脱离了原来的舒适区,确实有一些挑战.开始以为只做数仓建设的事情,就仓促的学习了一些数仓相关的知识,但没搞多久,还要负责公司BI的工作,又开始补习数分相关的知识 ...
- 白话TCP/IP原理
TCP/IP(Transmission-Control-Protocol/Internet-Protocol),中文译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议 ...
- Boost下载安装
下载解压 官方地址 wget https://dl.bintray.com/boostorg/release/1.72.0/source/boost_1_72_0.tar.gz tar -zxvf b ...
- Python向mysql数据库插入数据
一.向表tcolor中插入数据的主要流程如下: import datetimeimport pymysql.cursorsconnection = pymysql.connect(host='loca ...
- python pip无法安装到2.7
问题 pip默认指向python3.6,没有pip2,pip2.7 解决办法 加上应用路径 加上系统环境变量 参考 https://www.cnblogs.com/fanyuchen/p/712768 ...
- presence_of_element_located对比visibility_of_element_located
presence_of_element_located和visibility_of_element_located都是selenium里判断元素展示的方法,相信做ui自动化的小伙伴一定被这俩困扰过,本 ...