2020 年 12 月青少年软编等考 C 语言五级真题解析
目录
- T1. 漫漫回国路
- 思路分析
- T2. 装箱问题
- 思路分析
- T3. 鸣人和佐助
- 思路分析
- T4. 分成互质组
- 思路分析
T1. 漫漫回国路
2020 年 5 月,国际航班一票难求。一位在美国华盛顿的中国留学生,因为一些原因必须在本周内回到北京。现在已知各个机场之间的航班情况,求问他回不回得来(不考虑转机次数和机票价格)。
时间限制:1 s
内存限制:64 MB
- 输入
第一行为 case 个数 n ( n < 10 ) n\ (n < 10) n (n<10)。每一个 case,第一行为机场个数 N N N, N ≤ 10 N ≤ 10 N≤10。之后的 N N N 行,每一行包含 N N N 个整数。第 i i i( 1 ≤ i ≤ N 1 ≤ i ≤ N 1≤i≤N)行的第 j j j( 1 ≤ j ≤ N 1 ≤ j ≤ N 1≤j≤N)个整数代表从第 i i i 个机场出发到第 j j j 个机场的能买到的航班的最低票价 t t t( 0 < t < 10000 0 < t < 10000 0<t<10000)。如果不幸没有航班,那么用 − 1 -1 −1 表示。第 i i i 行第 i i i 个整数为 0 0 0。起点华盛顿杜勒斯国际机场的编号为 1 1 1,终点北京首都国际机场的编号为 N N N。 - 输出
每一个 case 一行。能够回国,输出字符串YES
。如果无法回国,输出字符串NO
。 - 样例输入
2 3 0 100 -1 -1 0 200 -1 -1 0 4 0 1 5 -1 3 0 1 -1 2 4 0 -1 4 1 1 0
- 样例输出
YES NO
思路分析
此题考查搜索算法,属于基础题。
从起点 1 1 1 开始搜索,枚举从当前点 x x x 可以到达的任意点 i i i,如果从 x x x 到 i i i 存在航班且尚未走过,就乘坐该航班到达点 i i i,并从点 i i i 继续搜索,直至走到尽头或者终点 n n n 即可结束。用 D F S \tt DFS DFS 或 B F S \tt BFS BFS 均可实现。
/** Name: T1.cpp* Problem: 漫漫回国路* Author: Teacher Gao.* Date&Time: 2025/01/03 00:21*/#include <iostream>
#include <queue>using namespace std;bool bfs(int n, int a[][15])
{queue<int> Q;bool f[15][15] = {0};Q.push(1);while (!Q.empty()) {