【GESP】C++三级练习 luogu-p1428, 小鱼比可爱
GESP三级练习,一维数组练习,难度★✮☆☆☆。
luogu-P1428 小鱼比可爱
题目要求
题目描述
人比人,气死人;鱼比鱼,难死鱼。小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度。参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只鱼的可爱程度,很显然整数越大,表示这只鱼越可爱,而且任意两只鱼的可爱程度可能一样。由于所有的鱼头都朝向左边,所以每只鱼只能看见在它左边的鱼的可爱程度,它们心里都在计算,在自己的眼力范围内有多少只鱼不如自己可爱呢。请你帮这些可爱但是鱼脑不够用的小鱼们计算一下。
输入格式
第一行输入一个正整数 $n$,表示鱼的数目。
第二行内输入 $n$ 个正整数,用空格间隔,依次表示从左到右每只小鱼的可爱程度 $a_i$。
输出格式
一行,输出 $n$ 个整数,用空格间隔,依次表示每只小鱼眼中有多少只鱼不如自己可爱。
样例输入 #1
1
2
6
4 3 0 5 1 2
样例输出 #1
1
0 0 0 3 1 2
提示
对于 $100\%$ 的数据,$1 \leq n\leq 100$,$0 \leq a_i \leq 10$。
题目分析
解题思路
- 首先,读取输入的鱼的数量 $n$ 和每只鱼的可爱程度 $a_i$。
- 初始化一个数组
result
来存储每只鱼左边比自己可爱程度小的鱼的数量。 - 使用一个循环来遍历每只鱼,从左到右。
- 对于每只鱼,使用一个内部循环来遍历它左边的所有鱼。
- 如果当前鱼的可爱程度大于左边的某只鱼的可爱程度,则
result
数组中对应当前鱼的位置的值增加 1。 - 输出
result
数组中的值,即每只鱼左边比自己可爱程度小的鱼的数量。
示例代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
int result[101];
int a[101];
int main() {
int n; // 输入的鱼的数量
cin >> n; // 读取输入的鱼的数量
for (int i = 0; i < n; i++) {
cin >> a[i]; // 读取每只鱼的可爱程度
}
for (int i = 1; i <= n; i++) {
for (int j = i - 1; j >= 0; j--) {
if (a[j] < a[i]) {
result[i]++; // 计算左边比当前鱼可爱程度小的鱼的数量
}
}
}
for (int i = 0; i < n; i++) {
cout << result[i] << " "; // 输出每只鱼左边比自己可爱程度小的鱼的数量
}
return 0;
}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
GESP各级别考纲要点、知识拓展和练习题目清单详见C++学习项目主页
“luogu-”系列题目已加入洛谷Java、C++初学团队,作业清单,可在线评测,团队名额有限,欢迎加入。
“bcqm-”系列题目可在编程启蒙题库进行在线评测。
本文由作者按照 CC BY 4.0 进行授权