• NOIP2011-普及组复赛模拟试题-第二题-买票


    题目背景 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

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

    代码如下:

     1 #include <stdio.h>
     2 int w[100];//存放每张票的价格 
     3 int ans;//结果 
     4 int tickets(int s,int n)
     5 {
     6     if(s==0)//刚好买完
     7     {
     8         ans++;//ans++ 
     9         return 1;//返回1 
    10     }     
    11     else if(s<0) return 0;//如果钱都没有了,返回0 
    12     else if(n<=0&&s>0) return 0;//如果还有钱,但是没票卖了,返回0 
    13     else
    14     {
    15         if(tickets(s-w[n-1],n-1)==1)//如果刚好能买,身上的钱减去电影票的钱,ans++ 
    16         {
    17             ans++;
    18             return 1;//返回1 
    19         }
    20         return tickets(n-1,s);//继续,电影票数目-- 
    21     }
    22 }
    23 int main()
    24 {
    25     int n,f,i;     
    26     //freopen("tickets.in","r",stdin);
    27     //freopen("tickets.out","w",stdout);
    28     scanf("%d%d",&n,&f);
    29     if(f==0) return 0;//没钱了买啥子??O(∩_∩)O 
    30     else
    31     {
    32         for(i=0;i<n;i++)//输入每张票的价格 
    33         {
    34             scanf("%d",&w[i]);
    35         }
    36         tickets(f,n);//传入递归函数(身上的钱,电影票数目) 
    37     }
    38     printf("%d
    ",ans);
    39     return 0;
    40 }
  • 相关阅读:
    汇编入门——使用DOSBox写一个HelloWorld以及相关软件安装
    HCNA-链路聚合(手工模式)
    逆向工程-真码保存在系统文件破解QQ游戏对对碰助手
    逆向工程-获得IPsearch的注册码
    遇见tongtong的思绪
    rhel7--06-预习--磁盘分区命令
    rhel7--05--第三章管道符与重定向符
    rhel7--01--安装
    虚拟机Centos8,没有网络,wired图标消失
    kali是靶体,内置工具可就地取材------网络安全法要天天供奉
  • 原文地址:https://www.cnblogs.com/geek-007/p/4731190.html
Copyright © 2020-2023  润新知