结构体编译不过是为什么

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 Priori_Incantatem @ 2019-02-23 19:25:50

看看行不


by Priori_Incantatem @ 2019-02-23 19:26:31

这你要问我我也不知道


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

@_Wolverine 好像我写的代码也有问题...没有输出,不过编译过了,我再看看吧


by Priori_Incantatem @ 2019-02-23 19:27:59

结构体排序的话cmp函数里的x,y就得跟你的结构体是同一个类型名


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

@_Wolverine 这样啊,那我这么说吧,就是这个cmp函数的返回值应该怎么解读呢


by Priori_Incantatem @ 2019-02-23 19:29:22

return x.yi<y.yi 就是按照每个苹果耗费体力数的升序排列(就是从小到大排序)


by csdfret @ 2019-02-23 19:29:50

@王宏宇11 当cmp返回值为1时就会交换


by Priori_Incantatem @ 2019-02-23 19:31:04

具体你可以去百度c++_结构体sort_cmp


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

@_Wolverine 大概明白了


by 王宏宇11 @ 2019-02-23 19:32:40

@   也就是只要符合


return x.yi<y.yi;
`
这个就交换吗

上一页 | 下一页