1 条题解
-
0
自动搬运
来自洛谷,原作者为

Maxmilite
**搬运于
2025-08-24 21:14:30,当前版本为作者最后更新于2023-01-05 21:33:50,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
[语言月赛202301] 华小科的旅行开始了 题解
Source & Knowledge
2023 年 1 月语言月赛,由洛谷网校入门计划/基础计划提供。
文字题解
题目大意
给定 ,起点以及「任务指引」。华小课从 出发,当当前点任务指引为 时代表旅程停止,否则前往当前点任务指引所指的点。依次输出从旅程开始到旅程停止访问的各个点。
解析
使用 的数组来存储本题的坐标可能会在计算下标等等方面比较麻烦。这里提供一种比较方便的存储数据的方式。
std::pair可以将 2 个数据组合成 1 个数据并进行储存。它的实现是一个结构体,主要的两个成员变量是first与second。具体的,使用时,我们可以使用
pair<?, ?>设立变量。这里的?可以替换为int等数据类型。建立时,可以使用make_pair(?, ?)函数。这里的?需要替换为对应的变量。访问时,直接访问pair 变量.first与pair 变量.second即可。使用例:
using namespace std; pair<int, int> a = make_pair(3, 4); cout << a.first << " " << a.second << endl;输出结果为
3 4。当然,我们同样可以用一个自定义的结构体实现相同的功能。
struct Pair { int first, second; };在后续的代码中,同样引用成员变量
first与second即可。
对于坐标的存储,我们可以使用
pair类型的数组来记录。#define pii pair<int, int> pii a[1005][1005]; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { cin >> a[i][j].first >> a[i][j].second; } }在访问时,我们使用两个
int变量x, y记录当前位置,使用while语句进行遍历输出即可。每一次,我们读取到
a[x][y]所存储的pair类型变量v,并将x赋值为v.first,将y赋值为v.second即可。循环的终止条件为x, y为 。核心代码如下:
int x = sx, y = sy; while (x && y) { cout << x << " " << y << endl; pii cur = a[x][y]; x = cur.first, y = cur.second; }视频题解
完整代码请在视频中查看。
- 1
信息
- ID
- 8242
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者