您的答案為: 19 270 正確答案為: 88 270
您的答案為: 5 251 正確答案為: 37 251
您的答案為: 143 276 正確答案為: 171 276
//------------------------------------------------------------------
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int n;
struct SUM{
int id, s;
};
SUM sum[350];
//---------------------------------------
bool comp1(SUM a, SUM b){
if(a.s>b.s) return true;
else if (a.s==b.s && a.id<b.id) return true;
else return false;
}
//=======================================
int main() {
while(cin>>n){
memset(sum,0,sizeof(sum));
for(int i=0; i<n; i++) {
int a,b,c;
cin>>a>>b>>c;
sum[i].s=a+b+c;
sum[i].id=i;
}
sort(sum, sum+n, comp1);
for(int i=0; i<n; i++) {
printf("%d %d\n",sum[i].id+1,sum[i].s);
if(i>=4) break;
}
cout<<endl;
}
}
請高手指教
您的答案為: 19 270 正確答案為: 88 270
您的答案為: 5 251 正確答案為: 37 251
您的答案為: 143 276 正確答案為: 171 276
//------------------------------------------------------------------
#include
#include
#include
using namespace std;
int n;
struct SUM{
int id, s;
};
SUM sum[350];
//---------------------------------------
bool comp1(SUM a, SUM b){
if(a.s>b.s) return true;
else if (a.s==b.s && a.id<b.id) return true;
else return false;
}
//=======================================
int main() {
while(cin>>n){
memset(sum,0,sizeof(sum));
for(int i=0; i<n; i++) {
int a,b,c;
cin>>a>>b>>c;
sum[i].s=a+b+c;
sum[i].id=i;
}
sort(sum, sum+n, comp1);
for(int i=0; i<n; i++) {
printf("%d %d\n",sum[i].id+1,sum[i].s);
if(i>=4) break;
}
cout<<endl;
}
}
請高手指教
據本人的臆測,您少考慮了總分同分的狀況。
當同分的時候,根據題目的敘述,應當要按照語文的成績由高排到低。
而如果語文也同分,則就按照學號由小排到大。
然而您的程式碼是直接排總分,再來學號。並沒有考慮進以上的語文分數。
例如:
5
1 2 3
2 3 1
2 1 3
1 1 1
1 1 1
您的程式碼應該會輸出以下:
1 6
2 6
3 6
4 3
5 3
但是實際的結果應為:
2 6
3 6
1 6
4 3
5 3
因為,學號 2 、 3 的總分 = 學號 1 的總分,但是學號 2 、 3 的語文分數比學號 1 的高。因此排在學號 1 的前面。
而學號 2 、 3 的總分相同,語文分數也一樣。因此按照學號大小由小排到大。
以上,希望有幫助到您。
您的答案為: 19 270 正確答案為: 88 270
您的答案為: 5 251 正確答案為: 37 251
您的答案為: 143 276 正確答案為: 171 276
//------------------------------------------------------------------
#include
#include
#include
using namespace std;
int n;
struct SUM{
int id, s;
};
SUM sum[350];
//---------------------------------------
bool comp1(SUM a, SUM b){
if(a.s>b.s) return true;
else if (a.s==b.s && a.id<b.id) return true;
else return false;
}
//=======================================
int main() {
while(cin>>n){
memset(sum,0,sizeof(sum));
for(int i=0; i<n; i++) {
int a,b,c;
cin>>a>>b>>c;
sum[i].s=a+b+c;
sum[i].id=i;
}
sort(sum, sum+n, comp1);
for(int i=0; i<n; i++) {
printf("%d %d\n",sum[i].id+1,sum[i].s);
if(i>=4) break;
}
cout<<endl;
}
}
請高手指教
據本人的臆測,您少考慮了總分同分的狀況。
當同分的時候,根據題目的敘述,應當要按照語文的成績由高排到低。
而如果語文也同分,則就按照學號由小排到大。
然而您的程式碼是直接排總分,再來學號。並沒有考慮進以上的語文分數。
例如:
5
1 2 3
2 3 1
2 1 3
1 1 1
1 1 1
您的程式碼應該會輸出以下:
1 6
2 6
3 6
4 3
5 3
但是實際的結果應為:
2 6
3 6
1 6
4 3
5 3
因為,學號 2 、 3 的總分 = 學號 1 的總分,但是學號 2 、 3 的語文分數比學號 1 的高。因此排在學號 1 的前面。
而學號 2 、 3 的總分相同,語文分數也一樣。因此按照學號大小由小排到大。
以上,希望有幫助到您。
OK 感謝!!!