codeforces 589J
来源:互联网 发布:mysql和oracle的区别 编辑:程序博客网 时间:2024/05/23 19:18
题意:有一个清洁机器人,他有三种操作 第一种:打扫当前单元, 第二种是按着当前机器人的方向走一格然后回到第一种操作, 第三种是机器人的方向按着顺时针转90度然后回到第二步,问最终能清洁多少个单元。
思路:刚开始又理解错题意, 因为转一次之后如果不能走就不能继续走下去了, 其实是可以的, 定义一个vis[i][j][d] 表示机器人是否在 i 行 j 列 方向为 d 的时候访问过, 如果访问过那么它就会走重复的路径, 这个时候就可以结束搜索了。
#include<cmath>#include<cstring>#include<cstdio>#include<algorithm>#include<queue>using namespace std;const int qq = 12;char gra[qq][qq];int vis[qq][qq][5];int n,m;char c[105];int k = 1;void dfs(int x, int y, int dir){int xx,yy;int cnt = 4;while(cnt--){if(dir==0)xx=x-1,yy=y;else if(dir==1)xx=x,yy=y+1;else if(dir==2)xx=x+1, yy=y;else xx=x,yy=y-1;if(gra[xx][yy]=='.'&&!(xx<0||yy<0||xx>=n||yy>=m))break;dir = (dir+1)%4;}if(!(gra[xx][yy]=='.'&&!(xx<0||yy<0||xx>=n||yy>=m)))return;if(vis[xx][yy][dir])return;int flag = 1;for(int i=0; i<4; ++i)if(vis[xx][yy][i])flag=0;if(flag)k++;vis[xx][yy][dir] = 1;dfs(xx, yy, dir);}int main(){memset(vis, 0, sizeof(vis));scanf("%d%d", &n, &m);for(int i=0; i<n; ++i)scanf("%s", gra[i]);int x,y;c['U'] = 0;c['R'] = 1;c['D'] = 2;c['L'] = 3;int dir;for(int j,i=0; i<n; ++i)for(j=0; j<m; ++j){if(gra[i][j]!='*'&&gra[i][j]!='.'){x = i, y = j;dir = c[gra[i][j]];}}vis[x][y][dir] = 1;gra[x][y] = '.';dfs(x, y, dir);printf("%d\n", k);return 0;}
0 0
- codeforces 589J
- codeforces 589J
- Codeforces 589J. Cleaner Robot
- CodeForces 589J Cleaner Robot
- CodeForces 589 J Cleaner Robot
- CodeForces 589J -- J. Cleaner Robot (BFS)
- CodeForces 589 J Cleaner Robot (DFS)
- CodeForces #589 J Cleaner Robot 搜索
- Codeforces 589J Cleaner Robot(DFS)
- CodeForces 44J Triminoes
- CodeForces - 630J Divisibility
- CodeForces-630 J. Divisibility
- Codeforces 630J Divisibility
- codeforces J. Spelling Check
- codeforces 730 J. Bottles
- codeforces 730J - Bottles
- codeforces 730 J Bottles
- Codeforces 630J
- phpstorm/webstorm/ide出现一只刷新缓存Updating Index
- 第9周项目2-对称矩阵压缩存储的实现与应用(2)
- ios developer tiny share-20161018
- 升iOS10后碰到几个坑爹问题
- Activity的几个生命周期
- codeforces 589J
- 第9周项目1-猴子选大王(数组版)
- android 关于使用retrofit2.0的一些问题
- 使用js实现tab页签切换效果
- 老司机谈DevOps 2.0:二
- Servlet相关常用类
- 第七周项目2 建立链队算法库
- jquery点击单张图片放大效果
- 硬盘监控