陶陶摘苹果

简介: 介绍一个可以用快速排序解决的一个经典题:陶陶摘苹果


这是洛谷上的一道题,原题链接陶陶摘苹果(升级版) - 洛谷


这道题用其他算法比较麻烦,快速排序可以很好解决这一点,当然用冒泡法也可以,不懂快速排序函数的可以看我以前的博客http://t.csdn.cn/tDQXb这里就直接使用


首先输入输出函数等等,可以将苹果的高度和所需要的力气放在一个结构体里,然后将不同的苹果放一个数组中即可

这样就可以将苹果个数,所剩力气大小,每个苹果的高度,所需力气等输入

接下来需要用快速排序将结构体按力气从小到大排序

比较函数(快速排序里面的实现函数)

最后只需要按顺序摘苹果,如果高度足够并且力气足够就可以摘,因为力气是从小到大排列的,不存在其他省力的情况

最后,将完整代码奉上

#include<stdio.h>
#include<stdlib.h>
struct App
{
  int height_;
  int strength_;
};
scanf_(struct App is[], int x)
{
  int i = 0;
  for (i = 0; i < x; i++)
  {
    scanf("%d%d", &((is+i)->height_),&((is+i)->strength_));//输入每个苹果的‘数据’
  }
}
int compar(const void* p1, const void* p2)
{
  return (((struct App*)p1)->strength_ - ((struct App*)p2)->strength_);
}
int main()
{
  struct App is[5001] = { 0 };
  int s = 0, n = 0;
  scanf("%d%d", &n, &s);
  int chair = 0, hand_max = 0;
  scanf("%d%d", &chair, &hand_max);
  scanf_(is,n);
  qsort(is, n, sizeof(is[0]),compar);
  int i = 0, count = 0;
  for (i = 0; i < n; i++)
  {
    if (chair + hand_max >= is[i].height_)
    {
      s -= is[i].strength_;
      if (s >= 0)
      count++;
    }
    if (s < 0)
      break;
  }
  printf("\n%d", count);
  return 0;
}
相关文章
|
Python
陶陶摘苹果问题
陶陶摘苹果问题
97 0
陶陶摘苹果
陶陶摘苹果
74 0
|
编解码 iOS开发
手机界的奇葩——索尼Xperia 1 II
今年二月份索尼发布了Xperia 1 II,不过国行版本就到了十月才发售,在全球最大的手机市场晚发售大半年,也就只有索尼能这么玩了。不过索尼还算是讲究,国行版本的内存从8GB提升到了12GB,而且增加了青山绿配色。
204 0
手机界的奇葩——索尼Xperia 1 II
|
供应链 小程序 物联网
央视网报道“手机就能打到拖拉机”,网友直呼“想种地了”
近日央视网在微博发布了一条新闻【手机就能打到拖拉机!#陕西榆林推出共享拖拉机#】,视频一上线,网友纷纷打call“智能化进军农业,想种地了”
267 0
央视网报道“手机就能打到拖拉机”,网友直呼“想种地了”
|
开发者
攻克苹果2.1被拒问题
在解决 Guideline 4.3 问题(可参考:攻克苹果4.3被拒问题 》)后, 我们今天来解决 Guideline 2.1 问题。 今天更新关于 Guideline 2.1 被拒的诸多问题及解决方案, 请耐心看下去, 无论你是否遇到2.1大礼包问题, 还是已经被误伤并已解决, 相信都会对过去起到总结作用, 同时对未来遇到 2.1 问题会得心应手, 心有成竹。
2690 0
|
开发工具 开发者
最新: 攻克苹果4.3被拒问题
从2017年年底开始, Apple似乎做了很大的升级, 让众多开发者陷入困境, 不单单是马甲, 就连正常的 App 也被误伤; 周围很多开发者向我"求救", 诉说新品处于【等待审核】或【正在审核】状态长达一两个月的; 似乎 iOS 开发者不单单只是开发项目, 高效上新和稳定更新 App 变得愈发重要。
5273 0
|
搜索推荐 Android开发 智能硬件