IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> ZCMU--5150: gsy 的仓库盲跑(C语言) -> 正文阅读

[C++知识库]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 <stdio.h>
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;i<q;i++){
			if(b[i]=='L'&&y-1>0&&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;
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-21 21:19:47  更:2022-07-21 21:22:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:23:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码