演算法學習之路|愛丁頓數

kissjz發表於2018-02-28

英國天文學家愛丁頓很喜歡騎車。據說他為了炫耀自己的騎車功力,還定義了一個“愛丁頓數”E,即滿足有E天騎車超過E英里的最大整數E。據說愛丁頓自己的E等於87。

現給定某人N天的騎車距離,請你算出對應的愛丁頓數E(<=N)。

輸入格式

輸入第一行給出一個正整數N(<=105),即連續騎車的天數;第二行給出N個非負整數,代表每天的騎車距離。

輸出格式

在一行中給出N天的愛丁頓數。

輸入樣例:
10
6 7 6 9 3 10 8 2 7 8
輸出樣例:
6

解題思路

什麼是愛丁噸數?

就是把一組數從大到小依次排序,當a[i]<=i時,i-1即是愛丁頓數。

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
bool cmp(int b,int a){
    if(a<b)
        return 1;
    return 0;
}
int main(){
    int n;
    cin>>n;
    int tmp;
    vector<int> v;
    for(int i=0;i<n;i++){
        cin>>tmp;
        v.push_back(tmp);
    }
    sort(v.begin(),v.end(),cmp);
    int max=0;
    for(;max<v.size();max++){
        if(v[max]<=max+1)
            break;
    }
    cout<<max;
}


相關文章