题解
查询分数2
1 条题解
-
0
解题思路
这道题其实就是**“先存起来,再按号查找”**。
学生学号从1开始,所以第1个输入的分数就是1号同学,第2个输入的分数就是2号同学……我们把分数按顺序存进数组,数组的下标正好就对应学号。
为什么一定要用数组存?因为如果一边读一边就丢掉前面的分数,等最后读到要查询的学号时,前面的分数早就没啦!数组就像一排抽屉,每个抽屉上贴着一个学号标签,我们可以把每个学生的分数放进对应的抽屉里,想找谁就找谁。
步骤:
- 读入学生人数 n;
- 用一个循环,把 n 个分数依次存进数组 a[1]~a[n];
- 读入要查询的学号 id;
- 直接输出 a[id],这就是该同学的分数。
参考代码
// P4450 查询分数2:把n个分数存入数组(学号1~n),再按学号id输出对应分数 #include <iostream> using namespace std; int a[105]; // a[i]存学号为i的同学的分数 int main() { int n, id; cin >> n; // 学生人数 for (int i = 1; i <= n; i++) // 学号从1开始 cin >> a[i]; // 读入每个学生的分数 cin >> id; // 要查询的学号 cout << a[id] << endl; // 学号id的分数就是数组第id个元素 return 0; }复杂度分析
- 需要读入 n 个分数,再输出 1 个分数,所以时间复杂度是 O(n)。
- 开了一个长度为 n 的数组存分数,空间复杂度是 O(n)。题目说 n≤100,所以开 105 个格子足够了。
- 1