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严格很多,代码不要打的太随意=。=