题目背景
So are you gonna die today or make it out aliveYou gotta conquer the monster in your head and then you'll flyFly Phoenix flyIt's time for a new empireGo bury your demons then tear down the ceilingPhoenix fly
选自《Phoenix》。
题目描述
凤凰妈妈有 n 只凤凰宝宝,它们的年龄恰好为 1,2,3,…,n。
每只宝宝都有上进心,年龄为 i 的宝宝的上进心用一个正整数 ai 表示。
如果一只宝宝的上进心大于所有年龄比它大的宝宝的上进心,则凤凰妈妈认为这只宝宝是好宝宝。
特别的,年龄为 n 的宝宝总是一个好宝宝。
给你 n 只宝宝的上进心,请输出有多少只宝宝是好宝宝。
输入格式
输入共两行。
第一行一个整数 n,表示宝宝的数量。
第二行 n 个整数 a1,a2,…,an,其中 ai 表示年龄为 i 的宝宝的上进心。
输出格式
一行一个整数,表示好宝宝的数量。
输入输出样例
输入 #1复制
5 3 2 4 3 3
输出 #1复制
2
输入 #2复制
5 5 4 3 2 1
输出 #2复制
5
输入 #3复制
6 1 2 3 4 5 6
输出 #3复制
1
说明/提示
样例 #1 解释
年龄为 n 的宝宝总是好宝宝,所以年龄为 5 的宝宝是好宝宝。
年龄为 4 的宝宝的上进心 a4=3,并不大于年龄为 5 的宝宝的上进心 a5=3,所以它不是好宝宝。同样,年龄为 1,2 的宝宝也不是好宝宝。
年龄为 3 的宝宝的上进心 a3=4 大于 a4 和 a5,所以它是好宝宝。
故共有 2 只好宝宝。
数据范围
对于所有数据,1≤n≤1000,1≤ai≤1000。
对于前 20% 的数据,n=2。
另有 40% 的数据,ai≤2。
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{int n, i, max, a, A[1000] = { 0 }, sum = 0;cin >> n;for (i = 0; i < n; i++){cin >> a;A[i] = a; //每只宝宝的好奇心}for (i = 0; i < n; i++){
//对第i只宝宝来说,只需与第i+1只到最后一只宝宝中上进心最大的一只比较max = *max_element(A + i + 1, A + 1000);if (A[i] > max) //如果第i只宝宝比它之后的宝宝上进心都大sum++; //那么乖宝宝+1}cout << sum; //输出乖宝宝的数量return 0;
}
其中对于max_element函数的使用见【洛谷】B3652 [语言月赛202208] 渡荆门送别-CSDN博客中有详细说明~