年前最后一次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 ...
随机推荐
- PowerShell【Do While、Do Until篇】
1 $num=0 2 while($num -le 10) 3 { 4 $num 5 $num+=1 6 } 1 $num=0 2 do 3 { 4 $num 5 $num+=1 6 } 7 whil ...
- dnspython模块报错 AttributeError: 'CNAME' object has no attribute 'address'
有时候用到这个模块的时候会报错 AttributeError: 'CNAME' object has no attribute 'address' 如下所示 [root@ansible ch01]# ...
- hisql ORM 查询语句使用教程
HiSql 提供一个可以适合多种数据库的中间查询语法,不需要关注各个数据库的语法特性,通过HiSql写语句可以在常用的不同类型数据库中执行,且语法与Sql语境类似一看就懂一学就会 hisql.net ...
- jsencrypt vue相关的rsa加密
vue组件引入 import { JSEncrypt } from 'jsencrypt' 方法内使用 let publicKey = asdfsafdadfafasjdhfasfd // 从后台获取 ...
- SYCOJ27猴子选大王
题目-猴子选大王 (shiyancang.cn) 一.出队顺序Description有M个人,其编号分别为1-M.这M个人按顺序排成一个圈.现在给定一个数N,从第一个人开始依次报数,数到N的人出列,然 ...
- C语言字幕从外向中间汇聚
演示数据中多个字符,从两端向中间移动,向中间汇聚 简单,粗暴,先上代码: Sleep()函数属于<windows.h>头文件中. sizeof()函数求右下标:数组内是数字时,求右下标要- ...
- leetcode 645. 错误的集合
问题描述 集合 S 包含从1到 n 的整数.不幸的是,因为数据错误,导致集合里面某一个元素复制了成了集合里面的另外一个元素的值,导致集合丢失了一个整数并且有一个元素重复. 给定一个数组 nums 代表 ...
- 1013day-人口普查系统
1.shuchu.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" ...
- azure flask 测试
本机 flask on linux service 完美.选择部署槽 web app service
- centos6.6手动安装mysql5.5并配置主从同步
0.实验环境 主机IP(Master) 192.168.61.150 centos6.6 从机IP(Slave) 192.168.61.157 centos6.6 1.查看centos系统版本 [ ...