zoukankan      html  css  js  c++  java
  • BNU34058——干了这桶冰红茶!——————【递推】

    干了这桶冰红茶!

    Time Limit: 1000ms
    Memory Limit: 65536KB
    64-bit integer IO format: %lld      Java class name: Main
    Type: 
    None
     
     

    BNUCIST的HWQ大神特别钟爱冰红茶这种神棍的饮料,有一天打Dota暴虐他寝室的WL后,决定大喝一顿庆祝一下。他决定用一种神棍的方式来喝冰红茶,那就是每口只喝1升,或者2升,或者3升(PS:HWQ大神真的能喝这么多= =)。爱思考的HWQ突然想知道,对于一桶整数升的冰红茶,他可以有多少种方案喝光,但似乎他不能马上想出解决的办法,纠结的他不知道答案他就喝不下去了。聪明的你快帮帮他吧。

     

    Input

        输入一个整数T,代表数据组数。

        对于每一组数据,输入一个整数N,1<=N<=30,表示这桶冰红茶有N升。

     

    Output

    对于每个N,输出一个整数,代表方案数。

     

    Sample Input

    1
    3
    

    Sample Output

    4

    Hint

    对于样例,3升的冰红茶,他可以(1)每次喝1升,连喝3口;(2)第一口喝1升,第二口喝2升;(3)第一口喝2升,第二口喝1升;(4)一口就喝掉3升。所以共有4种方案。

     

    Source

     
     
    解题思路:通过前面的递推出后边的。对于任意n可分为{{1,n-1},{2,n-2},{3,n-3}},所以sum[i]=sum[i-1]+sum[i-2]+sum[i-3];
     
    #include<bits/stdc++.h>
    using namespace std;
    int sum[50];
    int main(){
        int T;
        scanf("%d",&T);
        sum[0]=1;sum[1]=1;sum[2]=2;
        for(int i=3;i<32;i++){
            sum[i]=sum[i-1]+sum[i-2]+sum[i-3];
        }
        while(T--){
    
            int n;
            scanf("%d",&n);
            printf("%d
    ",sum[n]);
        }
        return 0;
    }
    

      

  • 相关阅读:
    【初码干货】使用阿里云开放搜索服务快速搭建资源搜索网站
    很认真的聊一聊程序员的自我修养
    【初码干货】使用阿里云邮件推送服务架设自己邮件验证与推送体系
    Supervisor 修改配置文件中的参数值,需要更新服务才能生效
    如何关闭 IntelliJ IDEA 的 Find in Path ?
    Jenkins 服务启动/关闭/重启命令,设置端口
    java.util.ConcurrentModificationException 问题处理
    MySQL 将字符串类型的小数转换为保留位数的小数类型
    Apache Tomcat 文件包含漏洞(CVE-2020-1938)
    Error EElFTPSError: Data channel transfer error (error code is 10054) MobaXterm
  • 原文地址:https://www.cnblogs.com/chengsheng/p/4409758.html
Copyright © 2011-2022 走看看