hdu 1035 Robot Motion

从IR Drop到EM分析:数字IC电源规划中那些没人明说的细节(以MTCMOS配置为例) 本文深入探讨数字IC后端设计中电源规划的关键细节,特别关注MTCMOS配置、电源网络电阻最小化和level shifter供电等实战技巧。通过分析IR Drop和EM问题,提供优化floorplan和powerplan的具体策略,帮助工程师避免常见陷阱,提升芯片设计的稳定性和可靠性。 阅读详情
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 3266    Accepted Submission(s): 1519


Problem Description


A robot has been programmed to follow the instructions in its path. Instructions for the next direction the robot is to move are laid down in a grid. The possible instructions are

N north (up the page)
S south (down the page)
E east (to the right on the page)
W west (to the left on the page)

For example, suppose the robot starts on the north (top) side of Grid 1 and starts south (down). The path the robot follows is shown. The robot goes through 10 instructions in the grid before leaving the grid.

Compare what happens in Grid 2: the robot goes through 3 instructions only once, and then starts a loop through 8 instructions, and never exits.

You are to write a program that determines how long it takes a robot to get out of the grid or how the robot loops around.

Input
There will be one or more grids for robots to navigate. The data for each is in the following form. On the first line are three integers separated by blanks: the number of rows in the grid, the number of columns in the grid, and the number of the column in which the robot enters from the north. The possible entry columns are numbered starting with one at the left. Then come the rows of the direction instructions. Each grid will have at least one and at most 10 rows and columns of instructions. The lines of instructions contain only the characters N, S, E, or W with no blanks. The end of input is indicated by a row containing 0 0 0.

Output
For each grid in the input there is one line of output. Either the robot follows a certain number of instructions and exits the grid on any one the four sides or else the robot follows the instructions on a certain number of locations once, and then the instructions on some number of locations repeatedly. The sample input below corresponds to the two grids above and illustrates the two forms of output. The word "step" is always immediately followed by "(s)" whether or not the number before it is 1.

Sample Input
  
3 6 5 NEESWE WWWESS SNWWWW 4 5 1 SESWE EESNW NWEEN EWSEN 0 0

Sample Output
  
10 step(s) to exit 3 step(s) before a loop of 8 step(s)

Source
 
 
很简单的题,用个顺路走用个布尔数组判重,重了就有LOOP循环,越界就是EXIT。循环次数是步数是重时步数减去被重位置步数加1。
虽然简单,还是让我WA了三次 委屈,做这种题尤其要注意细节否则会很惨的。
具体标程如下:
 
 
#include<cstdio>
#include<algorithm>
#include<cstring>
#define N 200
using namespace std;
char map[N][N];
int m,n,begin;
int step[N][N];
bool s[N][N];
int _step,loop;

void dfs(int x,int y)
{
  if(map[x][y]=='W')
  {
    if(y-1<0)
    {
      loop=0;_step=step[x][y]+1;
    }
    else if(s[x][y-1])
    {
      _step=step[x][y-1];
      loop=step[x][y]-step[x][y-1]+1;
      return;
    }
    else
    {
      s[x][y-1]=1;
      step[x][y-1]=step[x][y]+1;
      dfs(x,y-1);
    }
  }
  if(map[x][y]=='E')
  {
    if(y+1>=n)
    {
      loop=0;_step=step[x][y]+1;
      return;
    }
    else if(s[x][y+1])
    {
      loop=step[x][y]-step[x][y+1]+1;
      _step=step[x][y+1];
      return;
    }
    else
    {
      s[x][y+1]=1;
      step[x][y+1]=step[x][y]+1;
      dfs(x,y+1);
    }
  }
    if(map[x][y]=='N')
    {
      if(x-1<0)
      {
        loop=0;_step=step[x][y]+1;
        return;
      }
      else if(s[x-1][y])
      {
        loop=step[x][y]-step[x-1][y]+1;
        _step=step[x-1][y];
        return;
      }
      else
      {
        s[x-1][y]=1;
        step[x-1][y]=step[x][y]+1;
        dfs(x-1,y);
      }
    }
    if(map[x][y]=='S')
      {
        if(x+1>=m)
        {
          loop=0;_step=step[x][y]+1;
          return;
        }
        else if(s[x+1][y])
        {
          _step=step[x+1][y];
          loop=step[x][y]-step[x+1][y]+1;
          return;
        }
        else
        {
          s[x+1][y]=1;
          step[x+1][y]=step[x][y]+1;
          dfs(x+1,y);
        }
      }
}
int main()
{
  //freopen("4.txt","r",stdin);
  while(scanf("%d%d%d",&m,&n,&begin)&&(m||n||begin))
  {
    memset(map,-1,sizeof(map));
    memset(step,0,sizeof(step));
    memset(s,0,sizeof(s));
    for(int i=0;i<m;i++)
    scanf("%s",map[i]);
    s[0][begin-1]=1;
    dfs(0,begin-1);
    if(loop)
    printf("%d step(s) before a loop of %d step(s)\n",_step,loop);
    else
    printf("%d step(s) to exit\n",_step);
  }
  return 0;
}

嵌入式NTC温度解算库:Steinhart-Hart定点实现与硬件解耦设计 NTC热敏电阻是嵌入式系统中最常用的模拟温度传感器,其阻值-温度关系高度非线性,需依赖Steinhart-Hart方程实现高精度转换。该方程通过三参数对数多项式建模,理论上可将误差控制在±0.1°C以内,但直接移植到MCU面临浮点开销大、定点溢出、系数精度损失等工程瓶颈。为此,归一化处理(ln(R/R₂₅))、Q24.8定点运算、查表+插值对数计算等优化技术成为资源受限场景下的关键技术路径。其核心价值在于将ADC采样与温度解算彻底解耦,适配各类HAL/裸机/RTOS环境,广泛应用于电池管理、工业PLC、Io 阅读详情

相关推荐

【2025最新】Multisim 14.3超详细安装步骤 【附安装包+永久+汉化】|Multisim 14.3

嗨,小伙伴们!是不是一直在找可靠的multisim下载安装教程?今天就给大家带来超详细的2025年Multisim 14.3安装全攻略!这款电路仿真神器绝对是学电子、做电路设计的必备工具!很多朋友后台留言说安装时各种报错、汉化失败,所以我决定出一期零基础、保姆级的教程,从下载到安装再到汉化,全部一步到位搞定!按照我的步骤来,包你顺利安装不出错!!!通过本教程,相信大家已经成功安装并配置好了Multisim 14.3。这款电路仿真神器能帮你设计和测试各种电路,从简单的LED闪烁到复杂的信号处理电路都不在话下。

pythonpapaxia的博客 8万+

Robot Motion

Robot Motion Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2445Accepted Sub

chen 542

计算机组成原理课设

计算机组成原理课程设计

qq_63306482的博客 8054

杭电oj----1035 Robot Motion

题目大意:第一行输入三个数i,j,n,分别代表输入有i行j列,机器人站在n列,依照N(向上走一个单位)E(向右走一个单位)S(向下走一个单位)W(向左走一个单位)。 输出:输出有两种可能:1.走出这个矩阵,则输出走出的步数   2.未走出,那么一直都在矩阵中循环走,求走到开始循环的步数以及循环一次的步数。 解题思路:定义一个char类型的二维数组,因为输入的矩阵没有空格,所有可以用一个for循

yiyuqingning的博客 1372

Allegro中调整差分对等长的步骤介绍

【代码】Allegro中调整差分对等长的步骤介绍。

qq_30882617的博客 3833

BK7238(XH-WB3S)固件烧录实战:从AT固件选择到稳定下载全解析

本文详细解析了BK7238(XH-WB3S)模组固件烧录的全过程,从AT固件版本选择到稳定下载的实战技巧。重点介绍了烧录前的准备工作、硬件连接的正确姿势、烧录软件的实战技巧以及疑难问题排查指南,帮助开发者高效完成BK7238模组的固件烧录。

weixin_29159441的博客 249

杭电OJ 1035(C++)

本题比较基础,首先建立两个二维数组,一个保存地图,一个保存地图上某点已经走过的次数。 如果第一次走过某点,则增加step; 如果第二次走过某点,则增加loop,减少step; 如果第三次走过某点,则结束。 #include <iostream> using namespace std; const int MAX = 1000; char arr[MAX][MAX]; //地图数...

Intelligence1028的博客 397

实现电脑同时上内网和外网(或通过外网访问到该电脑通过该电脑访问内网)

一、需求描述 目前使用的公司网络只能够上内网,但是又有上外网查资料的需求: ①想要实现电脑既能上内网的同时也可以上外网; ②想要使用其他外网电脑使用外网连接到该电脑,通过该电脑访问内部的网络内容。 二、准备内容 电脑必须具备两个网卡,即:可以同时连接内网和外网(比如我的笔记本就可以:使用网线连接笔记本网口与内网通讯,使用WIFI连接手机热点访问外部网络); 注意:如果只有一个网口,可以另外购买USB的无线网卡来实现上网卡。 三、实现电脑同时上内网和外网的操作步骤 3.1、网络拓扑图 ..

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 2万+

杭电ACM1035——Robot Motion

这一题,简单的递归就可以搞定。 题目的意思是给出一个指令的二维数组,让一个机器人来走,第一种情况,可以走出去,算出多少步,第二种情况,一直无限走,存在一个环,算出环有几步,其他的有几步。 下面是AC的代码: #include #include using namespace std; bool vis[15][15]; /

XD 969

Centos7 yum 报错「Errno 256」No more mirrors to try 解决方法

首先该问题的出现是由于网络的震荡导致,这是重点。(1)将源更换成阿里云的官方源,步骤参考如上(2)同时将zabbix的官方源更换成阿里云里面的zabbix镜像源,因为zabbix官方源根本网络不通,因为国家防火墙的拦截,导致网络不通。这是阿里源的zabbix镜像地址: https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/修改系统中早期生成的zabbix.repo文件,如下:主要是把baseurl替换成阿里云的zabbix镜像地址即可。

专注基础架构领域 3873

R语言基于机器学习三分类结果、计算三分类混淆矩阵、计算每一个类别对应的特异度(specificity)、灵敏度(sensitivity)、PPV、NPV

R语言基于机器学习三分类结果、计算三分类混淆矩阵、计算每一个类别对应的特异度(specificity)、灵敏度(sensitivity)、PPV、NPV

data+scenario+science+insight 649

杭电ACM 1035

这里我只测试了该题发生的循环部分,非循环部分难度比较低,用该代码改进后就可运行。我计算出总的步数count和进入循环点之前的步数loopcount,两者相减就是循环步数。#include &lt;iostream&gt;#include &lt;stack&gt;using namespace std;int m,n,i,j;int count=0;int countloop=0;int flag...

heiyiming123的博客 541

刚体转动欧拉方程:从理论到卫星姿态控制的实践

刚体转动欧拉方程是描述刚体旋转运动的基本动力学方程,在卫星姿态控制、机器人学、航空航天等领域有着广泛应用。本文将详细讲解欧拉方程的物理概念、数学推导、数值计算方法,并重点分析其在卫星姿态控制系统中的具体应用。

ScilogyHunter的博客 642

杭电 hdu 1035 Robot Motion

嘿嘿,一次AC……哦耶~~~ 总得来说不算是难题,不过在处理坐标的时候出了问题,呃,这个代码中会有略微提到,因为比较简单,就不多说了,相信通过自己测试数据,也能理解的。   /* THE PROGRAM IS MADE BY PYY */ /*--------------

panyanyany(飞雨幻沙) 1203

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

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

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

HDU-1035 Robot Motion

HDU-1035 Robot Motion 题目链接:HDU-1035 题目大意:判断机器人能否从区域内走出去,如果能,输出他需要走的步数,如果不能走出在里面陷入了循环,输出一次循环的次数以及进入循环前走的步数 解题思路:运用map集合的特性 将位置设为key 将从起点开始到当前位置的步数作为value 进去死循环即可 如果到了边界就跳出来输出最大步数 如果进入循环就输出循环起点的步数(通过ma...

鱼头的水题之路 219

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

hdu 1035 robot motion

题目的意思就是给一个初始位置,按着指示往下走,计算出走出方格的步数 或者遇到循环的圈子计算圈子的步数和到达圈子的步数#include using namespace std; struct node { char instr; //指示方向 int step; //步骤 }; node Arr[11][11]; int iN,iM,istart_pos; //row,column,开始

水神 533

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

HDU ACM1035——Robot Motion

Robot Motion Problem Description A robot has been programmed to follow the instructions in its path. Instructions for the next direction the robot is to move are laid down in a grid. The possible ins...

BarisGuo的博客 324

HDOJ(HDU).1035 Robot Motion (DFS)

HDOJ(HDU).1015 Robot Motion [从零开始DFS(4)]点我挑战题目题意分析给出地图规模n * m, 给出入口坐标(0,y),遵循以下规则,求解机器人能否走出地图。若能,输出走出地图所需要的步数,若不能,输出进入循环前走的步数和循环的步数。规则: 若当前格子为N,则只能向上走,若为S向下走,E向右走,W向左走。我第一感觉是模拟题,因为对于每个格子状态是唯一的,只有1组解:要

Pengwill's Blog 1074

hdu1035Robot Motion

题目大意:就是给你一张图,然后你根据每次所在的位置的那个要求走下一步,出界条件就是结束的条件,否则如果进入循环你要输出你是经过几步到达这个循环的,并且这个循环有几步,胡搞题 注意:一开始你是在图内的,并不是从外面走向图内的,所以你一开始的位置要标记,并且保存的步数是0,dfs函数代表下一步的位置的情况,book保存的是你当前的步数(相对于本次表示的是上一次经过这个位置的步数),循环条件就是你遇到

小胡同的诗 288

HDU 1035 Robot Motion【模拟】

题目传送门;点击打开链接Robot Motion Time Limit: 1000 MSMemory Limit: 65536 KTotal Submit: 268(133 users)Total Accepted: 145(124 users)Rating:Special Judge: NoDescriptionA robot has been programmed to follow the ...

Emiya丶的博客 480

HDU 1035 Robot Motion

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1035   简单

M阳光的专栏 666

hdu 1035 Robot Motion

hdu  1035  Robot Motion                             http://acm.hdu.edu.cn/showproblem.php?pid=1035 貌似搜索的模拟 题目大意:一个二维表,每一个点上有一个路标,指向东西南北四个方向。从第一行的第t个点进入,按照路标走,只有两种情况,陷入循环或走出这个图。 题目分析:给出表的规模m和n、t,以及表

slicer的技术交流栈 786

HDU1035——Robot Motion

http://acm.hdu.edu.cn/showproblem.php?pid=1035 这倒题讲的是机器人通过给定的方向标识,判断花多长时间退出或者话多久后进入循环。 当然这道题也是用的深搜,改变的只有坐标就好了,问题是而且vis数组不需要reset,因为要判断是否重新回到一个点——会不会发生循环。 难点:记录走了多少步,我是在vis数组中记录当前是第几步,一举两得。记住有可...

aozhe0658的博客 157
上一篇: hdu 1164 Eddy's research I (数论)
下一篇: hdu 1372 Knight Moves(广搜)
剑不飞
博客等级 码龄15年 86粉丝 505原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值