中南大学研究生机试题记录

本文介绍了中南大学研究生机试题,涉及一个机器人在w*h迷宫中的行走问题。机器人根据给定指令行走,遇到障碍或边界则转向,求最多能经过多少个方格。通过DFS实现解题,详细代码及思路解析。
摘要由CSDN通过智能技术生成

有一个愚蠢的机器人走进一个w*h的迷宫,迷宫里有空地和陷阱。他想要访问迷宫的每个方格,但是它很笨,只会按照指令的方向走。当机器人不能走的时候,也就是下一步会遇到陷阱或迷宫边界,它会向右转90度(顺时针旋转90度)。请问这个机器人最多可以经过多少个方格。

输入

对于每组数据,第一行两个数w和h,表示迷宫的行和列(1<=w,h<=10)

接下来w行每行有h个字符用于描述这个迷宫。迷宫的‘.’表示空地,即为可以走的地方。‘*’表示陷阱,即为不能走的地方。迷宫中有一个英文字母,表示机器人的出发点,字母只有’U’,’D’,’L’,’R’四种。分别表示机器人的初始指令是向上,向下,向左,向右。

输出

对于每组数据,输出一个整数,即机器人一共经过多少个方格。

源代码:

#include<stdio.h>
#include<string.h>
const int maxnum=10;
char maps[maxnum][maxnum];
int sx,sy;//起始坐标
int w,h;//初始输入的w行h列的地图数据
char dir[]="URDL";
int visited[maxnum][maxnum];
int ans;//ans为最终的答案,即机器人可以走的步数
int dx[]={-1,0,1,0};  //顺序为上右下左  ,顺时针方向
int dy[]={0,1,0,-1};

void dfs(int x,int y,int dir,int steps){
    //firstly:设当前所在点为已访问
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值