c语言中陶陶摘苹果while,洛谷 P1478 陶陶摘苹果(升级版) C语言实现

题目描述

又是一年秋季时,陶陶家的苹果树结了n个果子。陶陶又跑去摘苹果,这次她有一个a公分的椅子。当他手够不着时,他会站到椅子上再试试。

这次与NOIp2005普及组第一题不同的是:陶陶之前搬凳子,力气只剩下s了。当然,每次摘苹果时都要用一定的力气。陶陶想知道在s<0之前最多能摘到多少个苹果。

现在已知n个苹果到达地上的高度xi,椅子的高度a,陶陶手伸直的最大长度b,陶陶所剩的力气s,陶陶摘一个苹果需要的力气yi,求陶陶最多能摘到多少个苹果。

输入输出格式

输入格式:

第1行:两个数 苹果数n,力气s。

第2行:两个数 椅子的高度a,陶陶手伸直的最大长度b。

第3行~第3+n-1行:每行两个数 苹果高度xi,摘这个苹果需要的力气yi。

输出格式:

只有一个整数,表示陶陶最多能摘到的苹果数。

输入输出样例

输入样例#1:

输出样例#1:

8 15

20 130

120 3

150 2

110 7

180 1

50 8

200 0

140 3

120 2

4

说明

所有数据:n<=5000 a<=50 b<=200 s<=1000

xi<=280 yi<=100

思路

咳,首先由于前几天刚刚学了什么是“深度优先搜索(DFS)”,看到这道题,我第一反应是:这个不就是用深度优先搜索吗?!把所有情况全部列举出来,然后再在满足条件的情况下选择能摘到最多苹果的情况,不就AC了吗?!

自我感觉非常良好,还自以为很聪明。我还在输入的时候就把摘不到的苹果忽略了,以此来减少列举情况,节约时间。

于是写了这样的代码:

代码

#include

void dfs(int s, int num);

int apple[5005], book[5005];

int max = 0, n, t = 0;

int main()

{

int s, a, b, i, max1, xi;

scanf("%d%d%d%d", &n, &s, &a, &b);

max1 = a + b;

for(i = 0; i < n; i++)

{

scanf("%d", &xi);

if(xi <= max1)

{

scanf("%d", &apple[t]);

t++;

}

else

scanf("%d", &xi);

}

dfs(s, 0);

printf("%d", max);

return 0;

}

void dfs(int s, int num)

{

int i;

if(s <= 0 || num == t)

{

if(s < 0)

num--;

if(num > max)

max = num;

return;

}

for(i = 0; i < t; i++)

{

if(book[i] == 0)

{

book[i] = 1;

dfs(s - apple[i], num + 1);

book[i] = 0;

}

}

return;

}

最后的结果当然AC了 ,好吧…TLE了…感觉瞬间自己被自己打脸。

然后再次经过不断思考发现,只要将可以摘到的苹果用“快速排序”将要用的力气从小到大排序出来,然后从最小的力气一直累加,直到累加值>=淘淘拥有的力气,这时候就可以得到摘到最多苹果的值了。

ps.这时候要注意,苹果为0的情况。和累加是大于力气,还是等于力气,这两种不同情况的时候要对值做不同的处理。

所以最终获得AC了!我果然是天才!

AC代码

#include

void quicksort(int left, int right);

int apple[5005];

int main()

{

int s, n, a, b, i, t = 0, max1, xi, sum = 0;

scanf("%d%d%d%d", &n, &s, &a, &b);

max1 = a + b;

for(i = 0; i < n; i++)

{

scanf("%d", &xi);

if(xi <= max1)

{

scanf("%d", &apple[t]);

t++;

}

else

scanf("%d", &xi);

}

if(n == 0)

{

printf("0");

return 0;

}

quicksort(0, t - 1);

for(i = 0; i < t; i++)

{

sum += apple[i];

if(sum == s)

{

printf("%d", i + 1);

return 0;

}

else if(sum > s)

{

printf("%d", i);

return 0;

}

}

return 0;

}

void quicksort(int left, int right)

{

int i, j, temp, t;

if(left > right)

return;

temp = apple[left], i = left, j = right;

while(i != j)

{

while(apple[j] >= temp && i < j)

j--;

while(apple[i] <= temp && i < j)

i++;

if(i < j)

{

t = apple[i];

apple[i] = apple[j];

apple[j] = t;

}

}

apple[left] = apple[i];

apple[i] = temp;

quicksort(left, i - 1);

quicksort(i + 1, right);

}

最后的体会是:做题不能想当然,要思考用最快的方法,而不是用自己感觉很厉害的方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/563739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言程序设计报告用于医院食品加工等部,南开(本部)《C语言程序设计》14春在线作业答案...

南开(本部)14春《C语言程序设计》在线作业 , W. v1 o) p. J2 n0 I试卷总分&#xff1a;100 测试时间&#xff1a;--4 v8 D, }8 e! w: D6 Y0 m一、单选题(共40道试题&#xff0c;共80分。)8 U: } j% ^2 T) F( q1.以下对一维整型数组 a 的正确说明是( ) C! f | }# n$ t7 g, z…

c语言中二分法100中找30,c语言中的二分法

\\\题外&#xff1a;对于printf引号中的内容一定要细心书写 ; 数组由a[0]开始计数&#xff0c;切记&#xff1b;尤其是与for循环中i1 搞混运用a[i1]等超前数据时 需先用for(i0;i<n-1;i){scanf("%d",&a[i]);}给数组全部赋值题目&#xff1a;对于方程 8*x^47*x^…

c语言 乘除法优先级,运算符运算符优先级 - C语言教程

运算符优先级运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级&#xff0c;例如&#xff0c;乘除运算符具有比加减运算符更高的优先级。例如 x 7 3 * 2&#xff0c;在这里&#xff0c;x 被赋值为 13&#xff0c;而不…

c语言long double位数,int long double 所占位数 和最大值

// // 32 // 位数 数值// int t1 pow(2, 31); // 4 2147483647// int32_t t2 pow(2, 31); // 4 2147483647// int64_t t3 pow(2, 62); // 8 4611686018427387904// NSInteger t4 pow(2, 32); // 4 2147483647// double t5 pow(2, 64); // 8 18446744073709551616.000000//…

存储器块清零c语言版,存储器块清零实验报告

有关单片机存储器块清零实验的试验报告存储器块清零实验报告班级&#xff1a; 11级计科班 姓名&#xff1a;苏靖 学号&#xff1a;1120070544 日期&#xff1a;2012-12-19一、实验目的&#xff1a;1、掌握存储器读写方法2、了解存储器的块操作方法.二、实验要求&#xff1a; 设…

C语言exchange函数,C++指针作为函数参数

函数的参数不仅可以是整型、浮点型、字符型等数据&#xff0c;还可以是指针类型。它的作用是将一个变量的地址传送给被调用函数的形参。【例6.3】题目同例6.2&#xff0c;即对输入的两个整数按大小顺序输出。这里用函数处理&#xff0c;而且用指针类型的数据作函数参数。程序如…

android自定义阴影,Android自定义边框加阴影

一、前言Android自定义边框&#xff0c;可以设置任意边框的角度和阴影。我下面分为 四个角度设置边框、两个角度设置边框、半圆球设置边框加两层阴影等。二、边框分类&#xff1a;1、四个角度设置边框效果图&#xff1a;图片.png2、两个角度设置边框android:topLeftRadius"…

linux read recv,read()/ recv()成功,但缓冲区未更改且为空

我正在编写一个客户端&#xff0c;以使用LINUX上的C脚本读取TCP下通过套接字从服务器发送回的数据。该服务器永远运行&#xff0c;我验证是否可以得到答复netcat localhost [PORT_NUMBER]。使用以下命令检查时&#xff0c;服务器处于LISTEN状态netstat -naprecv()函数返回预期的…

android 代码阅读,代码阅读器手机版-代码阅读器appv1.0 安卓版-腾牛安卓网

代码阅读器app&#xff0c;一款非常不错的手机阅读开源代码软件&#xff0c;不但能够让你们在上面选择自己喜欢的阅读代码&#xff0c;还能够选择大量的阅读主题&#xff0c;方便你们在任何时候&#xff0c;都能够获得最佳的阅读环境。代码阅读器app简介一款简单的源码阅读器的…

android点击运行后无法显示设备,Android仿真器除了黑屏外什么都不显示,adb设备显示“设备离线”...

我只是想开始在Android中进行开发。因此&#xff0c;问题是当我尝试通过发出命令emulator A2来启动仿真器时&#xff0c;屏幕上会出现一个仿真器。但是即使等待了2-3个小时&#xff0c;它所显示的只是一个黑屏。甚至没有android主屏幕或android徽标。只是黑屏。最初&#xff0…

Android测量图像中物体大小,android – 加载图像后测量ImageView

我试图找到一种方法来测量ImageView后使用Glide或Picasso(或其他任何东西)加载图像.基本上,我试图在某些位置在图像顶部布局其他视图,但需要最终的ImageViews尺寸才能准确地完成.我不知道用于尝试这样做的最佳布局是什么,但我目前正在使用这个&#xff1a;android:layout_width…

android string参数最大长度,每日一问 | 我们经常用的 String类型,你知道它最大可以放多长的字符串吗?...

String被用作常量时&#xff0c;它被编译器当成字面量存放于常量池。常量池中主要存放两大类常量&#xff1a;字面量和符号引用&#xff1b;常量池中的每一个常量都是一个表&#xff0c;字符串常量存于CONSTANT_Utf8_info表(Tip:字节码文件由无符号数和表映射的数据构成&#x…

android物理健代码,Android 物理按键整理及实例代码

先给大家看一段代码&#xff0c;然后说明。import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.KeyEvent;import android.widget.Toast;public class MainActivity extends Activity {Overrideprotected void onCreate(Bundle…

Android studio 按钮排版,Android Studio自动排版的两种方法

解决java compiler level does not match the version of the installed java project facet在项目目录的.setting文件夹下的org.eclipse.wst.common.project.facet.core.xml中 CSS长度单位及区别 em ex px pt in1. css相对长度单位 em 元素的字体高…

android 中自定义键盘,【图片】自定义属于自己的专属键盘的思路!!!(需要有android编程基础)【exagear吧】_百度贴吧...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼最近玩一些全键盘游戏,比如elona,nethack等等这类游戏,模拟器的键盘就很不够用,那个 游戏键盘 软件用起来体验也很不好,今天自己就琢磨着为这些游戏专门写一个键盘.1.首先尝试了写一个简单的键盘,发现无法实现跨进程用(也就是说只能…

linux sed 冒号,linux sed 总结

1.简介sed是一种行编辑器&#xff0c;它一次处理一行内容。2.sed调用方式sed [options] command file(s)sed [options] -f scriptfile file(s)第一种直接在命令行中执行&#xff0c;第二种把命令写到了脚本中&#xff0c;二者无本质区别。示例(1)&#xff1a;打印hello.txt的内…

wps office android,WPS Office

应用介绍安卓端办公软件&#xff0c;个人版免费使用用户多:全球用户600,000,000排名高:全球APP总榜同类产品榜首体积小:只安装一个应用即可打开所有格式文档云办公:免费云空间&#xff0c;安全高效&#xff0c;可以在任何设备.上及时查看和编辑远程办公推荐-远程会议&#xff0…

鸿蒙形容欣欣向荣发展,比喻事业蓬勃发展繁荣兴旺的成语蒸蒸日上

2020-03-13阅读(79)1.《RE从零开始的异世界生活》作者&#xff1a;长月达平。2.《魔法少女小圆》作者&#xff1a;新房昭之。3.《命运石之门》作者&#xff1a;冈部伦太郎。4.《寒蝉鸣泣之时》作者&#xff1a;前原圭一。5.《目隐都市的演绎者》作者&#xff1a;新房昭之。6.《…

android 照片特效,android触摸时扭曲变形图片照片,图片特效

【实例简介】在手指触摸照片图片时扭曲变形图片照片&#xff0c;用于变脸&#xff0c;哈哈镜&#xff0c;旗帜飘动特效的应用中【实例截图】【核心代码】MeshTest└── MeshTest├── AndroidManifest.xml├── bin│ ├── classes.dex│ ├── org│ │ └── …

c语言深度解剖 pdf,c语言深度解剖(解密).pdf.pdf

c语言深度解剖(解密).pdf.pdf还剩130页未读&#xff0c;继续阅读下载文档到电脑&#xff0c;马上远离加班熬夜&#xff01;亲&#xff0c;很抱歉&#xff0c;此页已超出免费预览范围啦&#xff01;如果喜欢就下载吧&#xff0c;价低环保&#xff01;内容要点&#xff1a;* Stru…