前言:
这篇文章还是是为了帮助一些
像我这样的菜鸟
找到简单的题解
描述
给定n个人的信息,每个人的信息包括姓名、身高和学号,编程输出身高最高的学生的信息。姓名仅包含大小写字母,长度不超过20,身高为不超过 10000 的正整数,学号为 8 位数字。
输入描述
第一行仅包含一个正整数n,接下来的n行,每行包含一位学生的信息,依次为姓名,身高,学号,各部分两两之间用一个空格分隔。
输出描述
仅一行,为身高最高的学生的信息,依次为姓名,身高和学号,各部分两两之间用一个空格分隔。如果最大高度有多名同学,则输出学号最小的那位学生的信息。
用例输入 1
5 John 172 20160302 Dava 178 20160908 Jack 169 20140903 Tom 180 20141212 Kit 170 20150403
用例输出 1
Tom 180 20141212
提示
数据范围:n 为不超过 100 的正整数。
问题解析:
简单结构体,可以用到cmp排序来完成
套用模板即可
接下来是90分和100分的代码
差别就是读题
能得90是因为样例水
90分代码部分:
#include<bits/stdc++.h>
using namespace std;
struct xc//定义结构体
{
string name;
long long bh,high;//如题目定义
};
int main()
{
long long n,flag=0,i,m;//定义变量
cin>>n;
xc a[n+5];//数组范围需要扩大
for(i=1;i<=n;i++)
{
cin>>a[i].name>>a[i].high>>a[i].bh;
if(a[i].high>flag)//擂台比较身高
{
flag=a[i].high;
m=i;//因为要输出姓名
}
}
cout<<a[m].name<<" "<<a[m].high<<" "<<a[m].bh;
return 0;
}
错在身高相同比编号
AC代码部分:
#include<bits/stdc++.h>
using namespace std;
const int M=1e2+5;
struct xc
{
string name;
long long bh,high;
}a[M];
bool cmp(xc x,xc y)//排序CMP
{
if(x.high==y.high) return x.bh<y.bh;//比编号
else return x.high>y.high;//比身高
}
int main()
{
int n,flag=0,i;
cin>>n;
for(i=1;i<=n;i++) cin>>a[i].name>>a[i].high>>a[i].bh;//输入
sort(a+1,a+n+1,cmp);//排序
cout<<a[1].name<<" "<<a[1].high<<" "<<a[1].bh;//输出
return 0;
}
非常节俭的代码