poj 1376 Robot

[size=medium]
题目意思:就是一个机器人从起点到终点找一条用时最少的路径,有两种命令,一种是走,只能走1,2,3步,还有是转向,只能向左或向右转,这个两种操作都会耗时1s。
这个还有个地方就是机器人有一定的体积
其实就是一个简单的bfs只不过状态要多一些,因为,起点是在左下角,终点在右上角,所以在处理障碍物时只用将障碍物的打小往有下方扩展1
/*
* File: main.cpp
* Author: mi
*
* Created on 2011年1月12日, 下午2:50
*/

#include <cstdlib>
#include <stdio.h>
#include <string.h>
#include <queue>
#define N 55
#define MAX 0x7fffffff
using namespace std;

/*
*
*/
struct node
{
int x,y,step,way;
}s,e;
int r,c,map[N][N],d[4][2]={0,1,1,0,0,-1,-1,0};
int used[N][N][4];
char str[10];
bool ok(int x,int y,node cur)
{
return x>0&&x<r&&y>0&&y<c&&used[x][y][cur.way]>cur.step+1;
}
int bfs()
{
int i;
queue<node> q;
while(!q.empty())
q.pop();
q.push(s);
node cur,next;
while(!q.empty())
{
cur=q.front();
q.pop();
if(cur.x==e.x&&cur.y==e.y)
return cur.step;
if(cur.step+1<used[cur.x][cur.y][(cur.way+1)%4])
{
next=cur;
next.step++;
next.way=(cur.way+1)%4;
q.push(next);
used[cur.x][cur.y][(cur.way+1)%4]=cur.step;
}
if(cur.step+1<used[cur.x][cur.y][(cur.way+4-1)%4])
{
next=cur;
next.step++;
next.way=(cur.way+4-1)%4;
q.push(next);
used[cur.x][cur.y][(cur.way+4-1)%4]=cur.step;
}
for(i=1;i<=3;i++)
{
int tx,ty;
tx=cur.x+i*d[cur.way][0];
ty=cur.y+i*d[cur.way][1];
if(map[tx][ty]==1)
break;
if(ok(tx,ty,cur))
{
next.x=tx;
next.y=ty;
next.step=cur.step+1;
next.way=cur.way;
q.push(next);
used[tx][ty][cur.way]=next.step;
}
}
}
return -1;
}
int main(int argc, char** argv)
{
int i,j;
while(scanf("%d%d",&r,&c)&&(r||c))
{
memset(map,0,sizeof(map));
for(i=0;i<r;i++)
for(j=0;j<c;j++)
{
int temp;
scanf("%d",&temp);
if(temp==1)
map[i][j]=map[i+1][j]=map[i][j+1]=map[i+1][j+1]=1;
used[i][j][0]=used[i][j][1]=used[i][j][2]=used[i][j][3]=MAX;
}
scanf("%d%d%d%d%s",&s.x,&s.y,&e.x,&e.y,str);
if(!strcmp(str,"east"))
s.way=0;
if(!strcmp(str,"south"))
s.way=1;
if(!strcmp(str,"west"))
s.way=2;
if(!strcmp(str,"north"))
s.way=3;
s.step=0;
printf("%d\n",bfs());
}
return 0;
}[/size][/size]
洛奇 服务器文件,MabinogiG20S2 [洛奇G20服务端] Code:Titles:>set_title /id: /add /remove Parameters for titles>set_title /id:60001 /add add devcat title>set_title /id:60001 /remove remove devcat title===========================... 阅读详情

相关推荐

空间数据库(1):Arcgis10.2连接PostgreSQL9.1,创建空间数据库,导入空间数据

1、arcgis的安装对于gis人员来说想必并不陌生,此处就不赘述了。那么就先从PostgreSQL说吧,我这里用的是跟Arcgis desktop 10.2所支持的9.1或者9.2版本,大家也可以用相对应的更高的版本来配置,注意的是版本一定要相互匹配,不仅是Arcgis与PostgreSQL的匹配,还有PostgreSQL与PostGIS匹配。 按道理desktop是32位的,应该用PostgreSQL的32位,但是我实在找不到32位的PostGIS9.1,所以就用64位的吧,后面配置部分可能需

XIAOHUA的博客 1319

POJ1376(A*)

题目链接:http://poj.org/problem?id=1376 优先队列默认为大根堆,如果是结构体的比较或者是小根堆的话要自定义cmp函数,但是这里cmp函数和sort里的函数是不一样的,要这样定义: struct cmp { bool operator () (int a, int b) { return a > b; //在sort中返回的是 a

qust1508060414的博客 568

【医学图像分割网络】之Res U-Net网络PyTorch复现

【医学图像分割网络】之Res U-Net网络PyTorch复现 1.内容 U-Net网络算是医学图像分割领域的开山之作,我接触深度学习到现在大概将近大半年时间,看到了很多基于U-Net网络的变体,后续也会继续和大家一起分享学习。这次分享ResNet+U-Net的一个改进版,ResNet本身就是一个十分优秀的backbone,目前应用仍然十分广泛,我们融合进ResNet后,我们就可以使得U-Net进行迁移学习了。 1.将Resnet作为encoder替换U-Net原始结构 2.U-Net提出时间较早,当时还没

qq_39071739的博客 1万+

poj 1376 Robot (BFS)

题目大意是给一个图,然后给你起点和终点,以及开始所处的方向,要求你求出从起点到终点的最小步数,如果无法到达则输出-1。这个题注意有4点: 1、它一秒可以执行2种命令,一种是向现在所面向的方向走1-3步,另外一种是向左或向右90度转向(不能向后转)。 2、图中为1的是障碍物,是不允许通过的,包括边界也不能允许,这一点需要注意下。 3、对搜索进行去重操作的时候需要记录所处位置的方向,因为这个题存

程序员的冷浪漫 1063

手把手教你用Pico4UE搭建100平米VR大空间:从设备检查、系统升级到地图绘制全流程

本文详细介绍了使用Pico4UE搭建100平米VR大空间的完整流程,包括设备检查、系统升级、地图绘制和性能优化等关键步骤。通过实战案例和专业技术建议,帮助用户高效部署企业级VR解决方案,适用于展厅漫游、工业仿真等多种场景。

weixin_28273593的博客 508

SAP采购订单行项目增强实战:用BADI ME_GUI_PO_CUST添加自定义字段(避坑指南)

本文详细解析了如何通过BADI ME_GUI_PO_CUST在SAP采购订单行项目中添加自定义字段,包括技术架构理解、字段扩展步骤、自定义函数组创建及BADI实现。文章特别强调了避开官方文档未提及的陷阱,如字段映射限制和屏幕显示问题,并提供了高级优化技巧和性能建议。

weixin_30402343的博客 595

POJ-1376-Robot

题目大意是给一个图,然后给你起点和终点,以及开始所处的方向,要求你求出从起点到终点的最小步数,如果无法到达则输出-1。这个题注意有4点: 1、它一秒可以执行2种命令,一种是向现在所面向的方向走1-3步,另外一种是向左或向右90度转向(不能向后转)。 2、图中为1的是障碍物,是不允许通过的,包括边界也不能允许,这一点需要注意下。 3、对搜索进行去重操作的时候需要记录所处位置的方向,因为这个题存

z309241990的专栏 2892

POJ 1376 Robot

因为机器人走的是格子上的线,而题目给的机器人的坐标是他的左上方,所以进行构图的时候可以从1,1点进行构图,方便理解,格子上的线看成从0,0点开始的,从而进行构图,每块格子跟格子上线一一对应。 ac代码: #include&lt;iostream&gt; #include&lt;queue&gt; #include&lt;cstring&gt; using namespace std; c...

兜率工的博客 325

推荐11个顶级的Claude Code Skills

ClaudeCode的Skills系统为程序员提供了11个强大的AI辅助工具,包括代码审查、重构建议、单元测试生成、API文档自动生成、性能分析、安全扫描、数据库迁移脚本生成、CI/CD配置、依赖管理、ER图生成和日志分析等功能。这些"技能包"可大幅提升开发效率,从代码质量到协作沟通全方位优化工作流程。用户可根据需求选择2-3个核心功能开始尝试,熟练后还可自定义Skills。该系统需要配合Anthropic的API使用,建议先在小型项目测试再应用于核心业务。

分享AI、区块链技术及应用,未来已来 1853

合肥工业大学嵌入式系统原理实验报告

GPKDAT 的6、7引脚设置低电平,设置GPKDAT = 0x30则34灯亮12灯灭,GPKDAT 的4、5、6、7引脚全为高电平,设置GPKDAT = 0xf0,则led灯全灭。注意在烧写时要连接主机后面的USB接口,烧写完成后,要关闭开发板电源,将S2拨动开关置于NAND位置,然后重新开启开发板电源, 则开发板运行刚刚烧入的裸机程序。实验修改要求:在延时不变的条件下,将原程序中四个LED全亮,然后全灭的显示状态,修改为“四个全亮,然后1和2亮(3和4灭),然后3和4亮(1和2灭),最后全灭”。

Martin-share的博客 3098

poj1376 搜索(BFS)

题目: http://poj.org/problem?id=1376 题意: 可以给机器人发两种指令:(1) GO: 一次朝一个方向移动1或2或3步  (2) TRUE: 转左或转右(一次只能转90度,不能连转两次) 。 每次执行1个指令都要花1秒。而且边界不能走。 思路: 用BFS,有三维数组保存状态,代表到达当前位置(x,y)在z方向上花的秒数(权重), 比较权重。比之前的状态权重小的,则

paul08colin 490

大数据架构中的数据治理:元数据管理与数据血缘追踪实践

本文将聚焦大数据架构中数据治理的两大核心支柱——元数据管理与数据血缘追踪元数据管理的目标、类型与实施步骤(从需求分析到工具落地);数据血缘追踪的技术实现(静态解析、动态捕获、混合方案)与应用场景;如何将两者结合,构建完整的数据治理体系,并通过真实案例展示落地效果。元数据管理:定义了业务/技术/操作元数据,讲解了工具选型(如Apache Atlas)、采集(Hook/API)、存储(关系库+图数据库)、应用(数据发现、质量监控);数据血缘追踪。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 868

Robot POJ - 1376

Robot POJ - 1376

weixin_29216119的博客 760

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

总结自己应用广度优先搜索(BFS)中的错误(记POJ 1376 Robot结题过程)

学习BFS之后以 POJ 1376 Robot(http://poj.org/problem?id=1376)作为练习,开始以为该题难度还好,但结果错了两天。特别郁闷的是竟然一直找不出错在什么地方,因为运行网上的题解在图较小的情况下没找出区别,最后碰运气花了个把小时在改图测试数据

perry_xiao的专栏 1189

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

POJ 1376 Robot——C++的BFS解法

题目传送门:http://poj.org/problem?id=1376 洛谷翻译传送门:https://www.luogu.org/problemnew/show/P1126 注:POJ是多组输入,洛谷是单组输入。 『解题思路』 采用BFS策略求从起点到终点的最短路,题目有点坑,输入的是方格坐标,但机器人移动的是点,应该注意。因为还有方向问题,故而首先将方向转化为数字变量,便于计算旋转的...

Miserable_ccf的博客 265

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

poj 1376 Robot

Description The Robot Moving Institute is using a robot in their local store to transport different items. Of course the robot should spend only the minimum time necessary when travelling from one

跟随内心的渴望 429

poj1376 Robot 搜索

Description The Robot Moving Institute is using a robot in their local store to transport different items. Of course the robot should spend only the minimum time necessary when travelling from one pla...

侯山窝矿工 275

POJ 1376 Robot A* -

题目地址:http://poj.org/problem?id=1376 纯属为了练习A*而写的 实际上A*感觉并不怎么占优势,因为转向不知道怎么体现在估价函数h()上,我只是用了曼哈顿距离当作h() 代码如下: #include #include #include #include #include using namespace std; const int maxn=50+5;

BRCOCOLI的博客 385

POJ - 1376 Robot

题意:求在可以一秒沿着既定方向走1到3步和向左或右转90度的情况下,从起点到终点的最短时间 思路:坑的是这机器人还有体积,所以不能走到边界,然后就是单纯的BFS #include #include #include #include #include using namespace std; const int MAXN = 110; struct node { int x,y;

那些年 1168

POJ 1376 Robot G++

#include <iostream> #include <cstdio> #include <cstring> #include <queue> #include <algorithm> using namespace std; //英语 看博友分析 博友程序更简洁 bfs int da[60][60]; int dis[60][60][4]; int vis[60][60][4]; int dx[4...

woniupengpeng的专栏 159

POJ 1376 Robot(BFS)

Description The Robot Moving Institute is using a robot in their local store to transport different items. Of course the robot should spend only the minimum time necessary when travelling from one pl

jinghui_7的博客 422

POJ1376-Robot

RobotTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 8679 Accepted: 2899DescriptionThe Robot Moving Institute is using a robot in their local store to transport different items. Of course th...

ML-M的博客 340
下一篇: poj 1376 Robot
Euler_M
博客等级 码龄16年 8粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值