题目

英国天文学家爱丁顿很喜欢骑车。据说他为了炫耀自己的骑车功力,还定义了一个“爱丁顿数”  ,即满足有  天骑车超过  英里的最大整数 。据说爱丁顿自己的  等于87。

现给定某人  天的骑车距离,请你算出对应的爱丁顿数 )。

输入格式:

输入第一行给出一个正整数  (),即连续骑车的天数;第二行给出  个非负整数,代表每天的骑车距离。

输出格式:

在一行中给出  天的爱丁顿数。

输入样例:

10
6 7 6 9 3 10 8 2 7 8

输出样例:

6

我的代码

#include<bits/stdc++.h>
using namespace std;

bool cmp(int a, int b){
    return a > b;
}

int main(){
    int n;
    cin>>n;
    int a[n] = {0};

    for(int i = 0; i < n; i++){
        cin>>a[i];
    }
    sort(a, a+n, cmp);
    int cut = 0;
    int p = 1;
    while(cut<=n&&a[p]>p){
        cut++;
        p++;
    }
    cout<<cut<<endl;
    return 0;
}

会出现:

因为忽视了一个问题,

 

int cut = 0;
int p = 1;
while(cut<=n&&a[p]>p){
    cut++;
    p++;
}

这里从p =1相当于第一天,但实际上a[p] 粗唇的是二天行驶的公里数 因此数组要从p[1] 开始储存数据

 

#include<bits/stdc++.h>
using namespace std;

bool cmp(int a, int b){
    return a > b;
}
int main(){
    int n;
    cin>>n;
    int a[n+1] = {0};

    for(int i = 1; i < n+1; i++){
        cin>>a[i];
    }
    sort(a+1, a+n+1, cmp);
    int cut = 0;
    int p = 1;
    while(cut<=n&&a[p]>p){
        cut++;
        p++;
    }
    cout<<cut<<endl;
    return 0;
}

这样就没有问题了:)

#

Comments are closed

2020年十月
« 9月    
 1234
567891011
12131415161718
19202122232425
262728293031