逻辑问题,对我来说还是挺有难度的,一开始想不通
我输入数据并以数据为下标,数据出现次数为内容存储
然后从后遍历计算所有大于当前下标的元素出现的次数
最后遍历一遍确定是否为爱丁顿数,如果大于当前已经找到的就替换,最后输出最大值

#include<stdio.h>
#include<algorithm>
using namespace std;

int data[1000005]={0};

int main(){
    int N;scanf("%d",&N);
    for(int i=0;i<N;i++){
        int temp;                               //输入
        scanf("%d",&temp);
        data[temp]++;
    }
    for(int i=1000003;i>=0;i--)                       //计算天数
        data[i]+=data[i+1];
    for(int i=1000003;i>=0;i--)                       //计算所有爱丁顿数
        data[i]= data[i]<i-1?data[i]:i-1;
    sort(data,data+1000005);
    printf("%d",data[1000004]);
    return 0;
}

相关文章:

  • 2022-02-20
  • 2022-01-18
  • 2021-08-08
  • 2022-03-07
  • 2021-06-28
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-06-22
  • 2021-09-01
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案