陶陶摘苹果

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


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


这道题用其他算法比较麻烦,快速排序可以很好解决这一点,当然用冒泡法也可以,不懂快速排序函数的可以看我以前的博客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
陶陶摘苹果问题
陶陶摘苹果问题
117 0
陶陶摘苹果
陶陶摘苹果
81 0
|
编解码 iOS开发
手机界的奇葩——索尼Xperia 1 II
今年二月份索尼发布了Xperia 1 II,不过国行版本就到了十月才发售,在全球最大的手机市场晚发售大半年,也就只有索尼能这么玩了。不过索尼还算是讲究,国行版本的内存从8GB提升到了12GB,而且增加了青山绿配色。
213 0
手机界的奇葩——索尼Xperia 1 II
|
开发者
攻克苹果2.1被拒问题
在解决 Guideline 4.3 问题(可参考:攻克苹果4.3被拒问题 》)后, 我们今天来解决 Guideline 2.1 问题。 今天更新关于 Guideline 2.1 被拒的诸多问题及解决方案, 请耐心看下去, 无论你是否遇到2.1大礼包问题, 还是已经被误伤并已解决, 相信都会对过去起到总结作用, 同时对未来遇到 2.1 问题会得心应手, 心有成竹。
2708 0
|
开发工具 开发者
最新: 攻克苹果4.3被拒问题
从2017年年底开始, Apple似乎做了很大的升级, 让众多开发者陷入困境, 不单单是马甲, 就连正常的 App 也被误伤; 周围很多开发者向我"求救", 诉说新品处于【等待审核】或【正在审核】状态长达一两个月的; 似乎 iOS 开发者不单单只是开发项目, 高效上新和稳定更新 App 变得愈发重要。
5404 0
|
安全 数据安全/隐私保护 iOS开发
一部iPhone洗白史是怎样炼成的?
本文讲的是一部iPhone洗白史是怎样炼成的?,前阵子,手机评测网站ZEALER创始人王自如在滴滴专车上丢失了一部iPhone 。(对,就是那个被认成刘翔、和老罗约架的王自如)
3359 0
听说你众筹了一块比苹果还牛X的手表?
本文讲的是听说你众筹了一块比苹果还牛X的手表?,众筹已经被越来越多的人熟悉,积少成多外加海量参与者,完全颠覆了传统的资本运作,每一个心怀梦想或困难缠身的人似乎都可以依靠众筹赢得天下。
1814 0