题目背景 Background

Ztc真的遇上黄牛了。。。
 题目描述 Description
  周末Ztc想去剧场看演出,但是他没有票。这时,救世主Wzj出现了,他慷慨地愿意卖给Ztc一些票。
  Wzj手上共有n张票,但每张票的费用都不一样,贪心的Ztc想要得到更多的票,但又想花费的最少,慷慨的Wzj愿意给连续的m张票。
  Ztc希望你能帮助他在花钱范围内取得最大的票数。
 输入输出格式 Input/output
输入格式:
输入文件tickets.in的第一行是2个整数n、f。其中(2≤n≤1000000),表示票的数目,(10≤f≤10000),表示Ztc身上的钱。
接下来的1行,有n个整数a(1≤a≤30),表示每一张票的票价。
输出格式:
输出文件tickets.out仅一行整数m,表示Ztc能得连续的最大票数。
 输入输出样例 Sample input/output
样例测试点#1

输入样例(tickets.in):

5 10

2 3 1 6 7

输出样例(tickets.out):

3

思路:这题呢,乍一看,有点像背包问题,选择最优解放入

可以使用递归简单点,把每张门票的价格存入数组,递归函数要有四个条件:

①如果票数没了,说明刚好买完,返回1,ans++

②如果钱没有了,返回0

③如果有钱没票,返回0

④如果上述条件都成立,继续递归,票数--,口袋里的钱减去已经买的门票的钱。

代码如下:

 #include <stdio.h>
int w[];//存放每张票的价格
int ans;//结果
int tickets(int s,int n)
{
if(s==)//刚好买完
{
ans++;//ans++
return ;//返回1
}
else if(s<) return ;//如果钱都没有了,返回0
else if(n<=&&s>) return ;//如果还有钱,但是没票卖了,返回0
else
{
if(tickets(s-w[n-],n-)==)//如果刚好能买,身上的钱减去电影票的钱,ans++
{
ans++;
return ;//返回1
}
return tickets(n-,s);//继续,电影票数目--
}
}
int main()
{
int n,f,i;
//freopen("tickets.in","r",stdin);
//freopen("tickets.out","w",stdout);
scanf("%d%d",&n,&f);
if(f==) return ;//没钱了买啥子??O(∩_∩)O
else
{
for(i=;i<n;i++)//输入每张票的价格
{
scanf("%d",&w[i]);
}
tickets(f,n);//传入递归函数(身上的钱,电影票数目)
}
printf("%d\n",ans);
return ;
}

NOIP2011-普及组复赛模拟试题-第二题-买票的更多相关文章

  1. NOIP2010-普及组复赛模拟试题-第二题-数字积木

    题目描述 Description 小明有一款新式积木,每个积木上都有一个数,一天小明突发奇想,要是把所有的积木排成一排,所形成的数目最大是多少呢?你的任务就是读入 n 个数字积木,求出所能形成的最大数 ...

  2. NOIP2010-普及组复赛模拟试题-第一题-手机

    题目背景 Background 现在手机使用越来越广泛了  题目描述 Description 一般的手机的键盘是这样的:   要按出英文字母就必须要按数字键多下.例如要按出 x 就得按 9 两下,第一 ...

  3. NOIP2011-普及组复赛模拟试题-第一题-NBA总冠军

    题目背景 Background 一年两度的期末考要到来了!!  题目描述 Description   又要到考试了,Ljw决定放松一下,就打开电视,看见了篮球赛,他立即想到了每年的NBA总冠军队伍.由 ...

  4. 冲刺NOIP2015提高组复赛模拟试题(五)2.道路修建

    2.道路修建 描述 Description liouzhou_101最悲痛的回忆就是NOI2011的道路修建,当时开了系统堆栈,结果无限RE… 出于某种报复心理,就把那题神奇了一下: 在 Z星球上有N ...

  5. CCF-NOIP-2018 提高组(复赛) 模拟试题(九)(2018 CSYZ长沙一中)

    T1 Circle [问题描述] 小 w 的男朋友送给小 w 一个 n 个点 m 条边的图,并且刁难小 w 要她找出点数最少的正环. 小 w 不会做,于是向你求助. [输入格式] 第一行两个整数\(n ...

  6. CCF-NOIP-2018 提高组(复赛) 模拟试题(四)

    T1 贪吃蛇 [问题描述] 贪吃蛇是一个好玩的游戏.在本题中,你需要对这个游戏进行模拟. 这个游戏在一个 \(n\) 行 \(m\) 列的二维棋盘上进行. 我们用 \((x, y)\) 来表示第 \( ...

  7. CCF-NOIP-2018 提高组(复赛) 模拟试题(一)

    T1 帽子戏法 问题描述 小 Y 有一个\(n*n*n\)的"帽子立方体" ,即一个\(n\)层的立方体,每层的帽子都 可以排成\(n*n\)的矩阵. "帽子立方体&qu ...

  8. CCF-NOIP-2018 提高组(复赛) 模拟试题(七)

    T1 Adjoin [问题描述] 定义一种合法的\(0-1\)串:串中任何一个数字都与\(1\)相邻.例如长度为$ 3 的 0-1 $串中,\(101\)是非法的,因为两边的\(1\)没有相邻的\(1 ...

  9. CCF-NOIP-2018 提高组(复赛) 模拟试题(三)

    T1 取球游戏 问题描述 现有\(N\)个小球,依次编号为\(1\)到\(N\),这些小球除了编号以外没有任何区别.从这\(N\)个小球中取出\(M\)个,请问有多少种取球方案使得在取出的\(M\)个 ...

随机推荐

  1. Python3 md5加密

    import hashlibuser = 'jointwisdom'pwd = 'zhonghui123'm2 = hashlib.md5()m2.update(pwd.encode("ut ...

  2. PHP不使用递归的无限级分类

    不用递归实现无限级分类,简单测试了下性能比递归稍好一点点点,但写得太复杂了,还是递归简单方便点 代码: <?php $list = array( array('id'=>1, 'pid'= ...

  3. CodeForces 671A Recycling Bottles

    暴力. 每个人找到一个入口,也就是从回收站到这个入口走的路程由人的位置到入口的路程来替代. 因此,只要找两个人分别从哪里入口就可以了.注意:有可能只要一个人走,另一人不走. #pragma comme ...

  4. js数组操作-数组去重

    第一个和第二个,都是对新数组或新json进行操作,而第三个是对原数组本身进行indexOf.第一个是用新数组的indexOf来判断是否有重复元素,而第二个是通过nHash[item]来判断是否存在. ...

  5. 【NOIP2006提高组】能量项链

    说好的好好写人话的题解 嗯很多题解都说过这是一个石子合并的模型它也确实就是一个石子合并的模型.然而就算这样我也不会写最后仍然写了个记忆化搜索 首先我们不论环状,就直接一条链型,当只剩下两个珠子的时候, ...

  6. Mysql开机启动,CentOS6.5

    使用chkconfig命令,步骤如下: 将服务文件拷贝到init.d下,并重命名为mysql cp /usr/local/mysql/support-files/mysql.server /etc/i ...

  7. 关于mac地址的一点感想

    因为怕mac地址冲突导致环路影响,所以修改了本地设备的mac地址.地址修改为 77:77:77:00:22:11, 结果导致 wlan0 下发不下来. 查看配置选项/etc/config/wirele ...

  8. Hadoop集群出现no data node to stop的解决方案

    问题描述: 今天stop hadoop集群的时候出现no datanode to stop ,寻找解决方案,并不是网上资料所说的什么DFS Used .Non DFS Used等于0 .所有的节点都是 ...

  9. Chapter 17_4 终结器

    Lua中的垃圾回收主要是针对Lua对象,但是也可以做一些额外的资源管理工作. 可以为表设定垃圾收集的元方法(对于完全用户数据,则需要使用C API),该元方法称为 终结器. Lua用"__g ...

  10. C++把引用作为返回值

    当返回一个引用时,要注意被引用的对象不能超出作用域.所以返回一个对局部变量的引用是不合法的,但是,可以返回一个对静态变量的引用. int& func() { int q; //! return ...