这是一道找规律题,
把题目中的测试递减排序, 并且表上序号, 如下:
测试1
每天骑行路程: 10 9 8 8 7 7 6 6 3 2
天数: 1 2 3 4 5 6 7 8 9 10
正确输出: 6
测试2
每天骑行路程: 10 10 10 10 5
天数: 1 2 3 4 5
正确输出: 4
测试3
每天骑行路程: 10 10 10 10 6
天数: 1 2 3 4 5
正确输出: 5
从左往右遍历, 发现只要当天的天数小于路程, 爱丁顿数累加1即可.
p是天数,ans是爱丁顿数
将测试数据递减放到数组a中,
只要p(天数)<a[p](当天的路程数),ans++
#include<bits/stdc++.h>
using namespace std;
bool compare(int a,int b){
return a>b;//从大到小排序
}
int main(){
int n;
cin>>n;
int v[100000];
for(int i=1;i<=n;i++)
{
int num;
cin>>num;
v[i] = num;
}
sort(v+1,v+n+1,compare);
int ans=0,p=1;
while((ans<=n)&&(p<v[p])){
ans++;
p++;
}
cout<<ans<<endl;
}