2023年12月C语言七级答案及解析.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

一、编程题

1、1.迷宫

一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n*

n的格点组成,每个格点只有2种状态,.和#,前者表示可以通行后者表示不能通行

。同时当Extense处在某个格点时,他只能移动到东南西北(或者说上下左右)四个方

向之一的相邻格点上,Extense想要从点A走到点B,问在不走出迷宫的情况下能不

能办到。如果起点或者终点有一个不能通行(为#),则看成无法办到。

时间限制:3000

内存限制:65536

输入

第1行是测试数据的组数k,后面跟着k组输入。每组测试数据的第1行是一个正整数

n(1=n=100),表示迷宫的规模n*n的。接下来是一个n*

n的矩阵,矩阵中的元素为.或者#。再接下来一行4个整数ha,la,hb,

lb,描述A处在第ha行,第la列,B处在第hb行,第lb列。注意到ha,la,hb,

lb全部是从0开始计数的。

输出

k行,每行输出对应一个输入。能办到则输出“YES”,否则输出“NO”。

样例输入

```

2

3

.##

..#

#..0022

5

###.#

..#..####.0040

```

样例输出

```

YES

NO

```

解析:【喵呜刷题小喵解析】:

这个问题可以使用广度优先搜索(BFS)来解决。

首先,读入迷宫的规模n,以及迷宫矩阵。同时,读入起点A和终点B的坐标。

如果起点A或者终点B是墙壁(即对应位置的字符为#),则无法从起点走到终点

,直接输出NO。

否则,使用BFS进行搜索。从起点A开始,将起点A加入队列,并标记为已访问。

然后,开始BFS,每次从队列中取出一个点,判断该点是否为终点。如果是,则返

回true,表示可以从起点走到终点。否则,将与该点相邻的四个点(东南西北)加

入队列,并标记为已访问。

如果搜索完整个迷宫,没有找到终点,则返回false,表示无法从起点走到终点。

在搜索过程中,使用一个二维数组visited来记录每个点是否被访问过,以避免重复

访问。同时,使用一个队列q来保存待搜索的点。

最后,输出搜索结果即可。

2、2.拯救公主

多灾多难的公主又被大魔王抓走啦!国王派遣了第一勇士阿福去拯救她。

身为超级厉害的术士,同时也是阿福的好伙伴,你决定祝他一臂之力。你为阿福提

供了一张大魔王根据地的地图,上面标记了阿福和公主所在的位置,以及一些不能

够踏入的禁区。你还贴心地为阿福制造了一些传送门,通过一个传送门可以瞬间转

移到任意一个传送门,当然阿福也可以选择不通过传送门瞬移。传送门的位置也被

标记在了地图上。此外,你还查探到公主所在的地方被设下了结界,需要集齐K种

宝石才能打开。当然,你在地图上也标记出了不同宝石所在的位置。

你希望阿福能够带着公主早日凯旋。于是在阿福出发之前,你还需要为阿福计算出

他最快救出公主的时间。

地图用一个R×C的字符矩阵来表示。字符S表示阿福所在的位置,字符E表示公主

所在的位置,字符#表示不能踏入的禁区,字符$表示传送门,字符.表示该位置安

全,数字字符0至4表示了宝石的类型。阿福每次可以从当前的位置走到他上下左右

四个方向上的任意一个位置,但不能走出地图边界。阿福每走一步需要花费1个单

位时间,从一个传送门到达另一个传送门不需要花费时间。当阿福走到宝石所在的

位置时,就视为得到了该宝石,不需要花费额外时间。

时间限制:1000

内存限制:65536

输入

第一行是一个正整数T(1=T=10),表示一共有T组数据。

每一组数据的第一行包含了三个用空格分开的正整数R、C(2=R,C=

200)和K,表示地图是一个R×C的矩阵,而阿福需要集齐K种宝石才能够打开拘禁

公主的结界。

接下来的R行描述了地图的具体内容,每一行包含了C个字符。字符含义如题目描

述中所述。保证有且仅有一个S和E。$的数量不超过10个。宝石的类型在数字0至4

范围内,即不会超过5种宝石。

输出

对于每一组数据,输出阿福救出公主所花费的最少单位时间。若阿福无法救出公主

,则输出“oop!”(只输出引号里面的内容,不输出引号)。每组数据的输出结果占

一行。

样例输入

```

1

782

S..#0..##..1...0#1###E1```

样例输出

```

11

```

参考答案:根据输入数据,地图大小为7x8,需要收集2种宝石。阿福的起始位

文档评论(0)

喵呜刷题 + 关注
实名认证
文档贡献者

来喵呜刷题,完成你的职业蜕变!

1亿VIP精品文档

相关文档