问题标题: 酷町堂:2733,谁能帮忙找找错的思路,谢谢了

0
0
已解决
赵航宇
赵航宇
资深守护
资深守护
90分代码如下:


#include<bits/stdc++.h>
using namespace std;
struct stu{
    string name;
    int y;
    int m;
    int d;
}a[110];
bool cmp(stu a,stu b)
{
       if (a.y!=b.y)
    return a.y>b.y; 
      if (a.m!=b.m)
        return a.m>b.m; 
      if (a.d!=b.d)
        return a.d>b.d; 
      if(a.name!=b.name)
        return a.name>b.name;
      } 
int main()
{   
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i].name>>a[i].y>>a[i].m>>a[i].d;
    }
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++)
    {
        cout<<a[i].name<<endl;
    }
    return 0;
}

 

谁的回答能让我AC

我就采纳谁!!!


0
已采纳
丁海洋
丁海洋
中级守护
中级守护

这题结构没问题,但是结构体函数很容易考输入靠前靠后,所以要看清题目,题目已经说了靠前的先输出,那么你就在struct的函数里来一个flag用来储存下标,flag一定要跟着i变,所以cin完后,a[i].falg要等于i,因为这样才能比较,然后就是你的代码问题

或许你是理解错了吧,题目并没说还要看名字哦。

 

结构体一定要定义一个flag(就是存下标的一个量)

cin后也一定要将a[i].falg等于i 哦!!

此题就ac

0
0
董宇昊
董宇昊
初级启示者
初级启示者

1结构体里面加个int f;

2cmp里面的

if(a.name!=b.name)
        return a.name>b.name;

后面加上

return x.f<y.f;

3.主函数第一个for循环

cin>>a[i].name>>a[i].y>>a[i].m>>a[i].d;

后面加一个

a[i].f=i;

则AC

~~~~~~~~~~~~~~~

望采纳!!谢谢!

我要回答