題目連接:請點擊
讀懂題意很重要
思路:先對輸入的數組按距離從大到小排序,for循環遍歷,把循環下標i當做天數,比較第i+1(i從0開始,所以是i+1)天與該下標所對應的騎行距離。只有當天數i+1恰好等於或大於此時的騎距離時(有i+1>=此距離),題目要求“超過”,所以有i天騎車超過此距離,既而有i天騎車超過i距離。
注1:測試點3 是因爲有可能出現下列情況(給定的N天的騎行數據,每天的騎行距離均大於N公里,此時要輸出N,即N爲所求愛丁頓數)
輸入用例
3
4 5 4
這樣應當輸出3,即有3天騎行距離大於3公里。
AC代碼:
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a,int b){
return a>b;
}
int main(){
int N;
while(cin>>N){
int num[N],E=0;
for(int i=0;i<N;i++) cin>>num[i];
sort(num,num+N,cmp);
for(int i=0;i<N;i++){
if(i+1>=num[i]){//第i+1天>=此時距離 可推出
E=i;
break;
}
}
if(num[N-1]>N) E=N;//見註解 防測試點3
cout<<E<<endl;
}
return 0;
}