万卷网 > 题目详情
题型:编程题

编程实现:

两名宇航员在探索一个未知行星,行星上有-一 些障碍物,这些障碍物用数字 1 表示,没有障碍物用数字 0 表示。

行星被表示成一个 N*M 的矩阵。

探素过程中两名宇航员走散了。已知 A 宇航员的位置 (×1,y1)和 B 宇航员的位置(x2,y2),请你帮助 A 宇航员寻找一条最短路径到达 B 宇航员的位置,并输出最短路径的长度(不包括起点)。

注意:

1.x1、x2 表示矩阵的行号,y1、y2 表示矩阵的列号;

2.左上角的位置为(0,0);

3.A、B 宇航员的位置只能在数字 0 上;

4.有障碍物的位置不能通过。

例如:当 N=4, M=5, x1=1,y1=0, x2=3,y2=3,A 宇航员位置(1,0) ,B 宇航员位貴(3,3),矩阵表示如下:

A 宇航员到 B 宇航员有 2 条路径:

第 1 条路径(1,0) -> (0,0) ->(0,1)->(0,2) ->(1,2) -> (2,2)-> (2,3) -> (3,3),路径长度为 7;

第 2 条路径(1,0) ->(2, 0) -> (2,1)-> (2,2)->(2,3)-> (3,3),路径长度为 5:

其中最短路径长度为 5。

输入描述:

第一行包含两个正整数 N (1≤N≤20)和 M (1≤M≤20),分别表示矩阵的行数和列数,正整数之间—个空格隔开

接下来 N 行,每行包含 M 个数字 (0 或 1),0 表示行星上没有障碍物的位置,1 表示行星上有障碍物的位置,整数之间—个空格隔开

最后一行包含四个整数 x1 (0≤x1 <N) , y1 (0≤y1<M),x2(0≤x2<N), y2 (0≤y2<M), (x1, y1) 表示 A 宇航员的位置,(x2,y2)表示 B 宇航员的位置,整数之间一个空格隔开

输出描述:

输出一个整数,表示 A 宇航员到达 B 宇航员的最短路径长度。如果输入不符合要求,输出-2,如果无法到达,输出-1


样例输入:

4 5
0 0 0 0 0
0 1 0 1 0
0 0 0 0 1
0 1 1 0 0
1 0 3 3

样例输岀:

5
更新时间:2024-01-16 11:51:22 |
【知识点】 蓝桥杯Python中/高级

相似题推荐

编程题

因数最多

提示信息:

因数:如果整数 a 除以整数 b(b≠0) 的商正好是整数且没有余数,则称 b 是 a 的因数。例如:整数 6 的因数有 1,2,3,6。

题目描述:

给定 n 个互不相同的整数,请找出其中因数数量最多的整数。如果因数数量最多的整数有多个,则输出最大的那个数。

例如:n = 4,给定的 4 个整数依次为 4,6,15,7;

4 的因数有 1,2,4,共 3 个;

6 的因数有 1,2,3,6,共 4 个;

15 的因数有 1,3,5,15,共 4 个;

7 的因数有 1,7,共 2 个;

因数最多的整数是 6 和 15,数量均为 4,但是 15 最大,所以输出 15。

输入描述:

第一行输入一个整数 n(1≤n≤1000),表示整数的数量;

第二行输入 n 个互不相同的整数(1≤整数≤105),整数之间以一个空格隔开。

输出描述:

输出一个整数,表示因数数量最多的整数;如果因数数量最多的整数有多个,则输出最大的那个数。


样例输入:

4
4 6 15 7

样例输出:

15
2025-07-24
编程题

移动字符0

编程实现:

给定一个包含数字 0 的字符串,将其中的所有 0 移到字符串末尾,同时保持其他非 0 字符的相对顺序不变,输出操作后的字符串。

例如:字符串 "A001020",将其中的 4 个 0 移到末尾后,结果为 "A120000"。

输入描述:

输入一个包含数字 0 的字符串(3≤字符串长度≤100)。

输出描述:

输出一个字符串,表示按要求操作后的字符串。

样例输入:

A001020

样例输出:

A120000


2025-07-24
单选题

下列选项中,( )是除法运算符?

A.

+

B.

-

C.

*

D.

/

2025-07-24
单选题

以下关于 Python 的描述,【错误】的是?( )

A.

常量 None 和 False 在逻辑值中被定义为假值

B.

pow(0, 0) 和 0 ** 0 的值都定义为 1

C.

list、tuple 和 range 对象是 Python 的三种序列类型

D.

1、1.0、True 可在同一个字典中作为不同的键

2025-07-24
编程题

编程实现:

Adam 和 Bob 在玩一种卡片接龙的游戏,他们各自有 n 张卡片,每张卡片写了一个号码,桌上还有一张写了号码 m 的卡片,他们会尽可能将手中的卡片进行接龙,游戏规则如下:

(1)由 Adam 开始,双方轮流接龙;

(2)接龙一方每次可以放置一张卡片到桌上,这张卡片必须比桌上的最小号码小 1,或者比桌上的最大号码大1,重复这个过程直到没有可以放置的卡片,然后轮到另一方接龙;

(3)胜负判定:

    (3.1)如果一方率先将手中的卡片全部放置(手中的卡片数量为 0),则这一方获得胜利;

    (3.2)如果双方都还有卡片,且都不能再放置卡片,则手中卡片较少的一方获得胜利;如果卡片数量相等,则平局。

给定 Adam 和 Bob 各自的卡片数量 n,以及双方的卡片号码,桌上的卡片号码 m。请计算出接龙游戏胜利方的名字和他手中剩余卡片的数量,如果平局,则输出 Draw 和 -1。

例如:n = 4;Adam 手中 4 张卡片的号码是 5、7、9、2;Bob 手中 4 张卡片的号码是 3、6、10、4;

m = 8,桌上卡片的号码是 8,初始由 Adam 开始,接龙情况如下:

(1)Adam 手中有比桌上最小号码 8 小 1 的卡片 7,将卡片 7 放置到桌上,手中还有比桌上最大号码 8 大 1的卡片 9,将卡片 9 放置到桌上,此时手中还有卡片 5、2,没有符合接龙的卡片,轮到 Bob;

(2)Bob 手中有比桌上最小号码 7 小 1 的卡片 6,将卡片 6 放置到桌上,手中还有比桌上最大号码 9 大 1的卡片 10,将卡片 10 放置到桌上,此时手中还有卡片 3、4,没有符合接龙的卡片,轮到 Adam;

(3)Adam 手中有比桌上最小号码 6 小 1 的卡片 5,将卡片 5 放置到桌上,此时手中还有卡片 2,没有符合接龙的卡片,轮到 Bob;

(4)Bob 手中有比桌上最小号码 5 小 1 的卡片 4,将卡片 4 放置到桌上,手中还有比桌上最小号码 4 小 1的卡片 3,将卡片 3 放置到桌上,此时手中卡片数量为 0,Bob 胜利。

输出 Bob 和 0。

输入描述:

第一行输入一个整数 n(2≤n≤1000),表示 Adam 和 Bob 的卡片数量;

第二行输入 n 个整数(1≤整数≤2000),表示 Adam 手中卡片的号码,整数之间以一个空格隔开;

第三行输入 n 个整数(1≤整数≤2000),表示 Bob 手中卡片的号码,整数之间以一个空格隔开;

第四行输入一个整数 m(1≤m≤2000),表示初始桌上的卡片号码。

输出描述:

第一行输出一个字符串,表示胜利方的名字,如果平局,则输出 Draw;

第二行输出一个整数,表示胜利方手中剩余卡片的数量,如果平局,则输出 -1。


样例输入:

4
5 7 9 2
3 6 10 4
8

样例输出:

Bob
0
2025-07-24
公众号
客服 反馈
顶部