年前最后一次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 ...
随机推荐
- Python_PyYaml模块的使用
YAML是一种比XML和JSON更轻的文件格式,也更简单更强大,它可以通过缩进来表示结构. 模块安装 pip install pyyaml # 如果是py2,使用 pip install yaml P ...
- mysql 的 limit 与sql server 的 top n
1.东西学多了,难免会混淆 貌似没有错,但是mysql不支持 top n 语法 而是使用 limit n 或 limit n , m 2. top n 语法 是SQL server 的
- PowerShell【IF篇】
1 [int]$num=0 2 do 3 { 4 $num+=1 5 if($num%2) 6 { 7 "$num"+" 是奇数" 8 }else{ 9 &qu ...
- tomcat 可部署4种方式
1.在conf\Catalina\localhost 目录下添加.xml配置文件 2.修改server.xml文件进行部署 3.将项目拷贝到webapps目录下 4.启动tomcat后,打开tomca ...
- HDU 2041 超级楼梯 (斐波那契数列 & 简单DP)
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2041 题目分析:题目是真的水,不难发现规律涉及斐波那契数列,就直接上代码吧. 代码如下: #inclu ...
- boot项目打包剔除配置文件(打包优化)
背景: 最近在项目开发中,在本地开发和线上部署的时候总是切换dev和pro环境,项目多了改起来还是很麻烦的,以下记录下boot项目的打包优化,打包的时候剔除配置文件,然后将配置文件手动放到线上,线上项 ...
- Android Sensor.TYPE_STEP_COUNTER 计步器传感器 步数统计
注意:使用 计步器传感器 Sensor.TYPE_STEP_COUNTER 获取步数前需要手机支持该传感器 1.学习资料 1.1 SENSOR.TYPE_STEP_COUNTER 地址:开发者文档 翻 ...
- Solon Web 开发,七、视图模板与Mvc注解
Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...
- 【刷题-PAT】A1126 Eulerian Path (25 分)
1126 Eulerian Path (25 分) In graph theory, an Eulerian path is a path in a graph which visits every ...
- 保存网页到zotero研究
打印长页 打印长页很麻烦,打印加载时间过长,打印后无法选取文字 https://www.zhihu.com/question/52639201?sort=created 插件 浏览器自带直接网页打印p ...