90分,测试点误判?求助大佬们!!!!!

P1093 [NOIP2007 普及组] 奖学金

HOML1N_ @ 2019-07-25 14:25:32

第二个测试点就是说我不对,

可是下载后测试时完全正确的,

源代码如下,问题到底出在哪里?

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    int a[n+10],b[n+10],c[n+10],yuwen,shuxue,yingyu;
    for(int i=1;i<=n;i++){
        cin>>yuwen>>shuxue>>yingyu;
        a[i]=yuwen+shuxue+yingyu;
        b[i]=i;
        c[i]=yuwen;
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(a[j]>a[j+1]||a[j]==a[j+1]&&c[j]>c[j+1]||a[j]==a[j+1]&&c[j]==c[j+1]&&b[j]<b[j+1]){
                swap(a[j],a[j+1]);
                swap(b[j],b[j+1]);
                swap(c[j],c[j+1]);              
            }

        }
    }
    for(int i=n+1;i>=n-3;i--){
        cout<<b[i]<<" "<<a[i]<<endl;
    }
    return 0;
}

by fxhfxh55555 @ 2019-07-25 14:37:26

a[j]>a[j+1]||a[j]==a[j+1]&&c[j]>c[j+1]||a[j]==a[j+1]&&c[j]==c[j+1]&&b[j]<b[j+1]

注意运算优先级,没有把握最好加括号,linux下评测运行结果可能和windows下不同


by fxhfxh55555 @ 2019-07-25 14:41:25

还有就是j+1的问题,你这j+1就到n外面去了啊


by fxhfxh55555 @ 2019-07-25 14:58:55

改好了,应该能AC,另外你错的地方我给你标注释里了

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

int a[999],b[999],c[999];                       //大一点的数组最好开在静态空间,开在函数里面会导致值不为0,而且函数里面开大了还会爆掉,
                                    //还有就是不要开动态数组,也就是a[n+10]这种形式,想开动态的最好用vector,具体原因可以自己去百度 

int main(){
    int n;
    cin >> n;
    int yuwen,shuxue,yingyu;
    for(int i=1;i<=n;i++){
        cin >> yuwen >> shuxue >> yingyu;
        a[i]=yuwen+shuxue+yingyu;
        b[i]=i;
        c[i]=yuwen;
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<n;j++){                   //注意这里不能循环到n,不然n+1会跑出你给的范围,很容易出错 
            if((a[j]>a[j+1])||(a[j]==a[j+1]&&c[j]>c[j+1])||(a[j]==a[j+1]&&c[j]==c[j+1]&&b[j]<b[j+1])){//注意||和&&的运算优先级,没有把握最好用括号 
                swap(a[j],a[j+1]);
                swap(b[j],b[j+1]);
                swap(c[j],c[j+1]);              
            }

        }
    }
    for(int i=n;i>=n-4;i--)                     //另外就是你这个n+1好迷啊。。。 
        cout << b[i] << ' '<< a[i] << '\n';
    return 0;
}

by fxhfxh55555 @ 2019-07-25 15:02:20

linux下评测会比windows严格很多,代码不要打的太随意=。=


|