栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

ZCMU--5150: gsy 的仓库盲跑(C语言)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ZCMU--5150: gsy 的仓库盲跑(C语言)

Description

最近有一部电视剧非常火,其中有一段剧情是主人公在一个没有办法看清任何货物的仓库中 盲跑,也就是凭记忆去确认自己的位置并且走到自己想要去的地方。

gsy 最近也想试试自己的记忆力,于是她找到了一个类似的游戏。

这个游戏一开始会给玩家看一份 n∗m 的地图,地图中 '*' 表示墙,'.' 表示空地,'#' 表示玩家所在的位置,当然玩家一开始所在的位置必然也是一个空地

但是一旦玩家开始移动,地图就会变黑不可见,也就是玩家没有办法知道自己的角色现在处于哪个位置,直到移动了 1001 次以后,地图才会重新显示

这个游戏一共有四种操作:

  1. U 向上走一步
  2. L 向左走一步
  3. D 向下走一步
  4. R 向右走一步

但是显然,如果 gsy 希望的下一个步骤会到达墙或者地图边界,则这一步会被跳过

比如当地图为

*#
..

此时下达的操作为 LRD, 因为左边是墙右边是递推边界所以 LR 两次操作是无效的

三次操作以后地图则会变成

*.
.#

现在 gsy 已经走了 p 步,但是她只记得自己进行过哪些操作,但是不知道自己到底走到哪了,于是她想向你求助。

请你告诉 gsy 现在的地图是什么样的。

Input

第一行包含三个正整数 n,m,p 表示地图大小为 n∗m,gsy 已经走了 p 步 接下来 n 行,每行包含 m 个字符,字符含义如题所示 接下来包含一行,共 p 个字符,每个字符表示 gsy 的一次操作,题目保证只会出现 U,L,D,R 这四个字符。

对于 60% 的数据,n,m≤30,p≤60

对于 100% 的数据,n,m≤100,p≤1000

Output

对于 100% 的数据,n,m≤100,p≤1000

Sample Input

2  2  3

* #

. .

LRD

Sample Output

*  .

.  #

解析:模拟行走路径,在每次移动前,先判断是否会超过边界或者不是空地,如果合法前进,就更改地图,同时更改人物坐标,最后将地图输出即可。

#include 
char a[105][105],b[1005];
int main()
{
	int n,m,q,i,j,x,y;
	while(~scanf("%d%d%d",&n,&m,&q)){
		for(i=1;i<=n;i++){
			for(j=1;j<=m;j++){
				scanf(" %c",&a[i][j]);	//建立初始地图
				if(a[i][j]=='#') x=i,y=j;	//记录出生点
			}
		}
		scanf("%s",b);	//读入移动指令
		for(i=0;i0&&a[x][y-1]=='.') a[x][y-1]='#',a[x][y]='.',y--;	//更新地图,更新人物坐标
			else if(b[i]=='R'&&y+1<=m&&a[x][y+1]=='.') a[x][y+1]='#',a[x][y]='.',y++;
			else if(b[i]=='D'&&x+1<=n&&a[x+1][y]=='.') a[x+1][y]='#',a[x][y]='.',x++;
			else if(b[i]=='U'&&x-1>0&&a[x-1][y]=='.') a[x-1][y]='#',a[x][y]='.',x--;
		}
		for(i=1;i<=n;i++){
			for(j=1;j<=m;j++) printf("%c",a[i][j]);
			printf("n");	
		}
	}
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1019033.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号