文章

【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$。


题目分析

解题思路

  1. 首先,读取输入的鱼的数量 $n$ 和每只鱼的可爱程度 $a_i$。
  2. 初始化一个数组 result 来存储每只鱼左边比自己可爱程度小的鱼的数量。
  3. 使用一个循环来遍历每只鱼,从左到右。
  4. 对于每只鱼,使用一个内部循环来遍历它左边的所有鱼。
  5. 如果当前鱼的可爱程度大于左边的某只鱼的可爱程度,则 result 数组中对应当前鱼的位置的值增加 1。
  6. 输出 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 进行授权