结构体编译不过是为什么

P1478 陶陶摘苹果(升级版)

王宏宇11 @ 2019-02-23 18:23:40

一枚真实的萌新,不会用结构体,代码结构体编译不过,不知道为什么,望大佬们看看

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
struct  node
{int xi;
 int yi;//力气 
};
node a[5005];
int main()
{int n,s,h,b;
int sum=0;
cin>>n>>s;
cin>>h>>b;
for(int i=1;i<=n;i++)
   cin>>a[i].xi>>a[i].yi;
sort(a+1,a+1+n);//排序 
while(s>=0)
   {int i=1;
    if(h+b>=a[i].xi)
      {sum++;
       s=s-a[i].yi;//如果可以就减去力气 
      } 
    i++;
    if(i>n)//力气多了退出 
     break;
    }
cout<<sum;
return 0;
} 

by 王宏宇11 @ 2019-02-23 18:24:23

让各位大佬看这个东西感觉都不好意思QWQ


by hl666 @ 2019-02-23 18:26:00

@王宏宇11

你在结构体数组内使用了sort

那么你需要重载一下<,否则编译器不知道你怎么比较两个node的大小


by csdfret @ 2019-02-23 18:39:59

@王宏宇11 按yi排序可以写个比较函数

bool c(node x,node y)
{
  return x.yi<y.yi;
}

再把sort改成

sort(a+1,a+1+n,c);

by csdfret @ 2019-02-23 18:41:08

这样就能比较了


by Ophelia @ 2019-02-23 18:47:16

@hl666 新人的话讲重载可能会听不懂的吧。。


by 王宏宇11 @ 2019-02-23 19:08:29

@hl666 确实不明白重载是什么意思QwQ


by Priori_Incantatem @ 2019-02-23 19:13:34

@王宏宇11 这和个结构体排序应该要写个cmp函数


by Priori_Incantatem @ 2019-02-23 19:14:03

@王宏宇11 私


by Priori_Incantatem @ 2019-02-23 19:14:34

算了这里可以用Markdown


by Priori_Incantatem @ 2019-02-23 19:17:37

@王宏宇11 你的输入好像错了
应该是先输入十个苹果的高度在输入一个淘淘的身高


| 下一页