CodeForces 589J Cleaner Robot
题意:一个机器人打扫卫生,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的更多相关文章
- CodeForces 589J Cleaner Robot (DFS,或BFS)
		
题意:给定n*m的矩阵,一个机器人从一个位置,开始走,如果碰到*或者边界,就顺时针旋转,接着走,问你最后机器人最多能走过多少格子. 析:这个题主要是题意读的不大好,WA了好几次,首先是在*或者边界才能 ...
 - 2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest J Cleaner Robot
		
Cleaner RobotCrawling in process... Crawling failed Time Limit:2000MS Memory Limit:524288KB ...
 - CodeForces - 589J —(DFS)
		
Masha has recently bought a cleaner robot, it can clean a floor without anybody's assistance. Schema ...
 - CodeForces 24D Broken robot(期望+高斯消元)
		
CodeForces 24D Broken robot 大致题意:你有一个n行m列的矩形板,有一个机器人在开始在第i行第j列,它每一步会随机从可以选择的方案里任选一个(向下走一格,向左走一格,向右走一 ...
 - Cleaner Robot - CodeForces	589J(搜索)
		
有一个M*N的矩阵,有一个会自动清洁的机器人,这个机器人会按照设定好的程序来打扫卫生,如果当前方向前面可以行走,那么直接走,如果不可以走那么会向右转动90度,然后回归上一步判断.求机器人最多能打扫的面 ...
 - Codeforces 922 C - Robot Vacuum Cleaner (贪心、数据结构、sort中的cmp)
		
题目链接:点击打开链接 Pushok the dog has been chasing Imp for a few hours already. Fortunately, Imp knows that ...
 - 【Codeforces 922D】Robot Vacuum Cleaner
		
[链接] 我是链接,点我呀:) [题意] 让你把n个字符串重新排序,然后按顺序连接在一起 使得这个组成的字符串的"sh"子序列最多 [题解] /* * 假设A的情况好于B * 也就 ...
 - Codeforces 1154D - Walking Robot - [贪心]
		
题目链接:https://codeforces.com/contest/1154/problem/D 题解: 贪心思路,没有太阳的时候,优先用可充电电池走,万不得已才用普通电池走.有太阳的时候,如果可 ...
 - CodeForces - 589J(DFS)
		
题目链接:http://codeforces.com/problemset/problem/589/J 题目大意:一个机器人打扫一个密闭的房间,房间由一个矩形构成,'*'表示家具,'.'表示该位置为空 ...
 
随机推荐
- Android Studio导入项目遇到的问题
			
[ Failed to resolve: com.afollestad:material-dialogs:0.7.5.5] 解决办法: 1.打开app目录下的build.gradle文件,然后在and ...
 - c语言之I/O函数
			
c语言中常用的I/O函数 最常用的字符串的标准I/O函数有getchar().putchar().gets().puts().scanf().printf().fputs().fgets().getc ...
 - Codeforces 刷水记录
			
Codeforces-566F 题目大意:给出一个有序数列a,这个数列中每两个数,如果满足一个数能整除另一个数,则这两个数中间是有一条边的,现在有这样的图,求最大联通子图. 题解:并不需要把图搞出来, ...
 - 【bzoj1941】 Sdoi2010—Hide and Seek
			
http://www.lydsy.com/JudgeOnline/problem.php?id=1941 (题目链接) 题意 给出n个二维平面上的点,求一点使到最远点的距离-最近点的距离最小. Sol ...
 - 前端神器avalonJS入门(一)
			
转自:http://www.cnblogs.com/vajoy/p/4063824.html avalonJS是司徒正美开发和维护的前端mvvm框架,可以轻松实现数据的隔离和双向绑定,相比angula ...
 - 终端指令操作创建Django项目
			
需求:通过Django创建一个用户表和权限表. 用户表包括:用户名,邮箱,密码,管理权限. 权限表包括:普通用户,管理用户,超级用户. 权限表和用户表有一对多的关系,即用户表中的每条数据对应权限表中的 ...
 - HotSpot JVM常用参数设置
			
转自:https://www.zybuluo.com/jewes/note/57352 选项的分类 Hotspot JVM提供以下三大类选项: 1. 标准选项:这类选项的功能是很稳定的,在后续版本中也 ...
 - java 多线程 1 线程 进程
			
Java多线程(一).多线程的基本概念和使用 2012-09-10 16:06 5108人阅读 评论(0) 收藏 举报 分类: javaSE综合知识点(14) 版权声明:本文为博主原创文章,未经博 ...
 - Nginx if 条件判断
			
Nginx if 条件判断: 1.公司网站上线有这样的需求: 由于公司网站域名从http到https的转移,在测试阶段需要公司内部进行测试,公司内部局域网访问时强制访问加密的https服务,外部用户访 ...
 - 如何修改geditor的配置文件 -好像geditor没有文本格式的配置文件? 要使用dconf-editor来配置- geditor自己配置编码格式
			
好像geditor没有文本格式的配置文件? 好像是通过一个程序, 叫 dconf-editor 来配置geditor的? 以前是通过gconf-editor来配置的, 但是gconf-editor的配 ...