0
已解决
李牧之
新手光能
新手光能
#include<bits/stdc++.h>
using namespace std;
struct stu{
string name;
int nl;
int a1;
int a2;
int a3;
int a4;
};
stu a[150];
int bj(int x,int y);
int jh(int x,int y);
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].name>>a[i].nl>>a[i].a1>>a[i].a2>>a[i].a3>>a[i].a4;
}
for(int i=1;i<=n-1;i++){
for(int j=i+1;j<=n;j++){
if (bj(i,j)==1){
jh(i,j);
}
}
}
for(int i=1;i<=n;i++){
cout<<i<<' '<<a[i].name<<' '<<a[i].a1+a[i].a2+a[i].a3+a[i].a4<<endl;;
}
return 0;
}
int bj(int x,int y){
if (a[x].a1+a[x].a2+a[x].a3+a[x].a4<a[y].a1+a[y].a2+a[y].a3+a[y].a4) return 1;
else if (a[x].a1+a[x].a2+a[x].a3+a[x].a4==a[y].a1+a[y].a2+a[y].a3+a[y].a4)
if (a[x].a1<a[y].a1) return 1;
else if (a[x].a2<a[y].a2) return 1;
else if (a[x].a3<a[y].a3) return 1;
else if (a[x].a4<a[y].a4) return 1;
else if (a[x].name<a[y].name) return 1;
return 0;
}
int jh(int x,int y){
string t;
swap(a[x].a1,a[y].a1);
swap(a[x].a2,a[y].a2);
swap(a[x].a3,a[y].a3);
swap(a[x].a4,a[y].a4);
swap(a[x].nl,a[y].nl);
t=a[x].name;
a[x].name=a[y].name;
a[y].name=t;
return 0;
}
大佬教我!!!
http://judge.codingtang.com/problem/1487/
顺便再帮我看看这个问题,回答的都看不懂
0
已采纳
陆麟瑞
资深天翼
资深天翼
这题我用选择排序做的。
for(int i=1; i<=n; i++)
{
cin>>s[i]>>a1>>a2>>a3>>a4>>b[i];
a[i]=b[i]+a2+a3+a4;
}
string t;
int tmp;
for(int i=1; i<n; i++)
{
for(int j=i; j<=n; j++)
if(a[i]<a[j]||a[i]==a[j]&&b[i]<b[j]||a[i]==a[j]&&b[i]==b[j]&&s[i]>s[j])
{
t=s[i];
s[i]=s[j];
s[j]=t;
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
tmp=b[i];
b[i]=b[j];
b[j]=tmp;
}
}
0
0
0
张舒斌
中级光能
中级光能
这道题我也是用选择写的;核心代码如下:
for(i=1;i<=n;i++)
{
for(j=i+1;j<=n;j++)
{
if(a[i].sum<a[j].sum)
{
swap(a[i],a[j]);
}
if(a[i].sum==a[j].sum)
{
if(a[i].d<a[j].d)
{
swap(a[i],a[j]);
}
if(a[i].d==a[j].d)
{
if(a[i].name>a[j].name)
{
swap(a[i],a[j]);
}
}
}
}
}
0
赵毅恒
资深守护
资深守护
这道题可以用结构体排序,用快排就行
函数代码如下
struct S{
string name;
int age,t1,t2,t3,t4,sum;
};
S s[110];
int b(S a,S b)
{
if(a.sum!=b.sum)
return a.sum>b.sum;
if(a.t4!=b.t4)
return a.t4>b.t4;
return a.name<b.name;
}
void qsort(S a[],int l,int r)
{
S mid=a[(r+l)/2];
int i=l,j=r;
while(i<=j)
{
while(b(a[i],mid))++i;
while(b(mid,a[j]))--j;
if(i<=j)
{
swap(a[i],a[j]);
++i;--j;
}
}
if(l<j)qsort(a,l,j);
if(i<r)qsort(a,i,r);
}
就是简单的暴力排序
0
王子凡
高级光能
高级光能
int cmp(stu a,stu b)
{
if (a.zong!=b.zong)
return a.zong>b.zong;
if (a.t4!=b.t4)
return a.t4>b.t4;
return a.name<b.name;
}
void qsort(stu a[],int l,int r)
{
int i,j;stu mid;
i=l; j=r;
mid=a[(l+r)/2];
while (i<=j)
{
while (cmp(a[i],mid))
i++;
while (cmp(mid,a[j]))
j--;
if (i<=j)
{
swap(a[i],a[j]);
i++;
j--;
}
}
if (l<j)
qsort(a,l,j);
if (i<r)
qsort(a,i,r);
}
这题我也是用结构体排序做的
这是核心代码