题目链接

题意:一个机器人打扫卫生,URDL代表初始时机器人面对的方向上右下左。 ' . ' 代表可以打扫的, ' * ' 代表家具,如果机器人遇到家具就顺时针转90度,问机器人能打扫多少面积。

题解:记录机器人走过每个点时所面对的方向,如果走过了这个点走过的方向就不用走了,模拟机器人的行走过程即可。只记录机器人第一次走过某点时面对的方向也可以。数据范围较小,开个三维vis数组也行。

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
int dx[]= {-,,,};
int dy[]= {,,,-};
int vis[][][];
int n,m,k;
char c[][];
int sx,sy;
int sum,d;
void init()
{
sum=;
sx=-;
sy=-;
memset(vis,,sizeof(vis));
for(int i=; i<n; i++)
{
scanf("%s",c[i]);
for(int j=; j<m; j++)
{
if(c[i][j]=='U')
{
sx=i,sy=j;
d=;
}
if(c[i][j]=='R')
{
sx=i,sy=j;
d=;
}
if(c[i][j]=='D')
{
sx=i,sy=j;
d=;
}
if(c[i][j]=='L')
{
sx=i,sy=j;
d=;
}
}
}
}
void dfs(int i,int j,int d)
{
if(c[i][j]=='.')
{
sum++;
c[i][j]='#';
}
for(k=;k<;k++)
{
int td=(k+d)%;
int x=i+dx[td];
int y=j+dy[td];
if(x>=&&x<n&&y>=&&y<m&&c[x][y]!='*') //走
{
if(vis[x][y][td]) return; //走过的路
vis[x][y][td]=;
dfs(x,y,td);
return ;//继续往下走 不是传统的栈深搜
}
}
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
init();
dfs(sx,sy,d);
printf("%d\n",sum);
}
return ;
}

CodeForces 589J Cleaner Robot的更多相关文章

  1. CodeForces 589J Cleaner Robot (DFS,或BFS)

    题意:给定n*m的矩阵,一个机器人从一个位置,开始走,如果碰到*或者边界,就顺时针旋转,接着走,问你最后机器人最多能走过多少格子. 析:这个题主要是题意读的不大好,WA了好几次,首先是在*或者边界才能 ...

  2. 2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest J Cleaner Robot

    Cleaner RobotCrawling in process... Crawling failed Time Limit:2000MS     Memory Limit:524288KB     ...

  3. CodeForces - 589J —(DFS)

    Masha has recently bought a cleaner robot, it can clean a floor without anybody's assistance. Schema ...

  4. CodeForces 24D Broken robot(期望+高斯消元)

    CodeForces 24D Broken robot 大致题意:你有一个n行m列的矩形板,有一个机器人在开始在第i行第j列,它每一步会随机从可以选择的方案里任选一个(向下走一格,向左走一格,向右走一 ...

  5. Cleaner Robot - CodeForces 589J(搜索)

    有一个M*N的矩阵,有一个会自动清洁的机器人,这个机器人会按照设定好的程序来打扫卫生,如果当前方向前面可以行走,那么直接走,如果不可以走那么会向右转动90度,然后回归上一步判断.求机器人最多能打扫的面 ...

  6. Codeforces 922 C - Robot Vacuum Cleaner (贪心、数据结构、sort中的cmp)

    题目链接:点击打开链接 Pushok the dog has been chasing Imp for a few hours already. Fortunately, Imp knows that ...

  7. 【Codeforces 922D】Robot Vacuum Cleaner

    [链接] 我是链接,点我呀:) [题意] 让你把n个字符串重新排序,然后按顺序连接在一起 使得这个组成的字符串的"sh"子序列最多 [题解] /* * 假设A的情况好于B * 也就 ...

  8. Codeforces 1154D - Walking Robot - [贪心]

    题目链接:https://codeforces.com/contest/1154/problem/D 题解: 贪心思路,没有太阳的时候,优先用可充电电池走,万不得已才用普通电池走.有太阳的时候,如果可 ...

  9. CodeForces - 589J(DFS)

    题目链接:http://codeforces.com/problemset/problem/589/J 题目大意:一个机器人打扫一个密闭的房间,房间由一个矩形构成,'*'表示家具,'.'表示该位置为空 ...

随机推荐

  1. hibernate入门案例

    最近准备学ssh,今天学了一下hibernate,用的是hibernate4,现在已经出5了:配置文件很容易写错,写配置文件的时候尽量复制. 需要的jar包如下:(jar包我是直接放在项目工程里面了, ...

  2. 【codeforces 749E】 Inversions After Shuffle

    http://codeforces.com/problemset/problem/749/E (题目链接) 题意 给出一个1~n的排列,从中等概率的选取一个连续段,设其长度为l.对连续段重新进行等概率 ...

  3. 【poj3744】 Scout YYF I

    http://poj.org/problem?id=3744 (题目链接) 题意 给出n个雷,分别在 a[1]...a[n] ,走一步概率为 p ,走两步概率为 1-p ,一开始在 1 号位置,问安全 ...

  4. [转] C++的引用传递、指针传递参数在java中的相应处理方法

    原文出处:[http://blog.csdn.net/conowen/article/details/7420533] 首先要明白一点,java是没有指针这个概念的. 但是要实现C++的引用传递.指针 ...

  5. Linux简单的日志审计

    生产环境日志审计解决方案 所谓的日志审计,就是记录所有系统及相关的用户行为,并且可以自动分析.处理.展示(包括文本或者录像) 1)     :通过环境变量以及rsyslog服务进行全部日志审计(信息太 ...

  6. 个人作业——week2

    一.发现的功能性bug 1.这个手机客户端的拍照翻译功能虽然能够正确的识别图像,但是不能有效的识别出图像中的文字,给出的提示总是图像识别成功,没有识别到文字,导致这个功能几乎无法使用. 因为刚下载这个 ...

  7. php登录主机机制

    注册机制 //用户名需过滤的字符的正则 $stripChar = '?<*.>\'"'; ){ $this->error('用户名中包含'.$stripChar.'等非法字 ...

  8. SQL2008 无日志附加MDF文件

    SQL数据在附加的时候..有时会因为日志文件过大..或者一些其他问题造成附加失败.. 笔者遇到的问题是数据库主文件(*.mdf)超过25G..日志文件超过200G..附加的耗时简直日了狗了..最后超时 ...

  9. hibernate学习二(HelloWorld)

    一.建立hibernate配置文件 在工程Hibernate_01_HelloWorld下的src上建立hibernate.cfg.xml,打开hibernate-release-4.3.11.Fin ...

  10. 关于MapReduce中自定义分区类(四)

    MapTask类 在MapTask类中找到run函数 if(useNewApi){       runNewMapper(job, splitMetaInfo, umbilical, reporter ...