MC0101 冰雪大冒险&&MC0102 房间打扫

您所在的位置:网站首页 小码哥初始密码 MC0101 冰雪大冒险&&MC0102 房间打扫

MC0101 冰雪大冒险&&MC0102 房间打扫

2024-07-12 04:56| 来源: 网络整理| 查看: 265

题目:MC0101冰雪大冒险

难度:白银   时间限制:1秒   占用内存:128M

小码哥最近在玩一个游戏叫做冰雪大冒险,这个游戏在一个n行m列的网格上进行。某些格子上存在一些无法通过的障碍物,其余格子均是光滑的冰面玩家初始在其中一个非障碍物格子上,且保持静止然后他会操控角色进行上下左右移动,当他控制角色朝一个方向移动时,角色会在冰面上一直滑行直到角色移动方向的下一个格子为障碍物或者超出地图边界时,角色才会停止移动,然后继续等待小码哥的下一个操作。现在给出地图中所有障碍物的位置,小码哥的初始位置和小码哥的操作序列,请你求出小码哥最终停留的位置。

输入格式:

第一行输入两个整数n m(2≤n,m≤100) ,表示地图的行数和列数 第二行输入两个整数 x,y(1≤x≤n,1≤y≤m) ,表示小码哥初始在第行第y列。 第三行输入一个整数 k(1≤k≤n*m-1) ,表示地图上障碍物个数。 接下来输入k行,每行输入两个数字a, b,表示第个障碍物的位置在第a,行,第b列。保证输入障碍物不会重叠,且不会出现在小码哥初始位置上。

最后输入一行长度不超过1000,仅包含LRUD四种字母的字符串。字符串中的第个字母表示小码哥第步操作的运动方向。其中LRUD依次表示向左、向右、向上和向下。

输出格式:

输出两个用空格隔开的数字,表示小码哥最终所在位置的行号和列号。

算法思想:

       这个问题可以使用模拟的方法来解决。首先,我们需要创建一个大小为 n 行 m 列的地图,标记其中有障碍物的格子。然后,我们将小码哥的初始位置标记在地图上。接着,我们按照小码哥的操作序列逐步更新小码哥的位置,直到遇到障碍物或地图边界为止。最后,输出小码哥最终停留的位置。

在地图范围内且没有障碍物则持续移动,碰到障碍物或者到边界则停止。可以用while循环来表示物体移动,当超出范围或者碰见障碍物则停止循环。

代码: #include #include int main() { int n,m,x,y,k; scanf("%d %d",&n,&m); scanf("%d %d",&x,&y); scanf("%d",&k); int a[101][101]={0}; for(int i = 0 ;i < k;i++){ int b,c; scanf("%d %d",&b,&c); a[b][c]=1; } char d[1000]; int q=0;//是否有障碍物,有为1,没有则为0 scanf("%s",d); for(int i=0;i=1&&x=1&&y=1&&x=1&&y=1&&x=1&&y=1&&x=1&&y


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3