PAT甲级1117.

目录

A1117

题目

样例

输入:

10
6 7 6 9 3 10 8 2 7 8

输出:

6

思路和坑点

  思路:
  按照题目的给定的概念先排序,然后计算出爱丁顿数。

AC代码

#include<bits/stdc++.h>
using namespace std;
bool cmp(int a,int b){
    return a>b;
}
int main(){
#ifdef ONLINE_JUDGE
#else
    freopen("1.txt", "r", stdin);
#endif 
    int n,ans=0;
    scanf("%d",&n);
    int a[n];                               //变量初始化数组需要编译器支持
    for(int i=0;i<n;i++) scanf("%d",&a[i]); //读入数据
    sort(a,a+n,cmp);                        //从大到小排序
    while(ans<n&&a[ans]>ans+1)  ans++;      //在满足下标的范围内,统计满足的天数,为保证ans下标有效性,ans<n判定放在前边
    printf("%d",ans);                       //由于从大到小排列,所以ans下标总共有ans+1天,所以如果有ans+1天的骑行超过ans+1,就统计计数
    return 0;
}