C++全WA,求帮助

P5740 【深基7.例9】最厉害的学生

xhz0311 @ 2022-12-05 18:41:47

求帮助,可以过样例,但全WA

#include <cstdio>
using namespace std;

struct stu{
    char name[8];
    int yw;
    int sx;
    int yy;
    int sum;
};

int main()
{
    int k;
    scanf("%d",&k);
    struct stu m,n;
    for (int j=0; j<8; j++)
    {
        scanf("%c",&m.name[j]);
        if (int (m.name[j])==32)
        {
            break;
        }
    }
    scanf("%d",&m.yw);
    scanf("%d",&m.sx);
    scanf("%d",&m.yy);
    m.sum=m.yw+m.sx+m.yy;
    for (int i=1; i<k; i++)
    {
        for (int j=0; j<8; j++)
        {
            scanf("%c",&n.name[j]);
            if (n.name[j]==32)
            {
                break;
            }
        }
        scanf("%d",&n.yw);
        scanf("%d",&n.sx);
        scanf("%d",&n.yy);
        n.sum=n.yw+n.sx+n.yy;
    }
    if (n.sum > m.sum)
    {
        m=n;
    }
    for (int i=0; i<=7; i++)
    {
        if (m.name[i]==' ')
        {
            break;
        }
        printf("%c",m.name[i]);
    }
    printf(" %d %d %d",m.yw, m.sx,m.yy);
    return 0;
}

by _Virgo_ @ 2022-12-05 19:27:11

@__er 他这样写怎么不可以。


by _Virgo_ @ 2022-12-05 19:29:31

@xhz0311

#include<bits/stdc++.h>//万能头文件写了就不用写其他的头文件了
using namespace std;

struct stu{
    string name;
    int yw;
    int sx;
    int yy;
    int sum;
};

int main()
{
    int k;
    cin>>k; //c++ 有好用的cin 为啥要用scanf。
    struct stu m,n;
    cin>>m.name>>m.yw>>m.sx>>m.yy;
    m.sum=m.yw+m.sx+m.yy;
    for (int i=1; i<k; i++)
    {
        cin>>n.name>>n.yw>>n.sx>>n.yy;
        n.sum=n.yw+n.sx+n.yy;
        if(n.sum>m.sum)
            m=n;//判断放循环里
    }
    cout<<m.name<<' '<<m.yw<<' '<<m.sx<<' '<<m.yy;
    return 0;
}

by __er @ 2022-12-05 19:30:07

@Virgo 反正我看就是一个混乱的求最大值/kk


by _Virgo_ @ 2022-12-05 19:30:35

@__er 但凡他知道 sort,大概率也知道 string 了。


by xhz0311 @ 2022-12-05 19:30:49

深吸一口气

终于过了!!!

#include <iostream>
#include <string>
using namespace std;

struct stu{
    string name;
    int yw;
    int sx;
    int yy;
    int sum;
};

int main()
{
    int k;
    cin>>k;
    struct stu m,a[k];
    cin>>m.name>>m.yw>>m.sx>>m.yy;
    m.sum=m.yw+m.sx+m.yy;
    for (int i=1; i<k; i++)
    {
        cin>>a[i].name>>a[i].yw>>a[i].sx>>a[i].yy;
        a[i].sum=a[i].yw+a[i].sx+a[i].yy;
        if (a[i].sum > m.sum)
        {
            m=a[i];
        }
    }
    cout<<m.name<<m.yw<<m.sx<<m.yy;
    return 0;
}

题解好像不能发在讨论区啊

感谢大家!


by __er @ 2022-12-05 19:31:13

@Virgo 你看你这么写可读性不就高多了,原来那个是真的离谱

题解没用吗


by __er @ 2022-12-05 19:31:45

@Virgo 好像确实(


by xhz0311 @ 2022-12-05 19:31:56

@Virgo 学校信奥小组老师唯一没讲的基础语法就是string,唯一不让用的就是sort。。。


by _Virgo_ @ 2022-12-05 19:33:10

@__er 但是他空间复杂度是\Theta(1) ,时间复杂度是 \Theta(n) ,比排序的\Theta(n\log n) 要快。


by xhz0311 @ 2022-12-05 19:33:13

再次感谢大家!


上一页 | 下一页