zoukankan      html  css  js  c++  java
  • 快手2019秋招--魔法深渊

    分析:递归或者dp,爬楼梯很老的一道题目

    当前台阶方法数 = 所有一次可到达当前台阶方法数的和

    最初的题目是只能上1、2、3个台阶所以dp[i]+=dp[i-1]+dp[i-2]+dp[i-3];

    这个是1,2,4,8,16,32,就是2^n方,也就是只要t=i-2^n>=0,dp[i]+=dp[i-t]

    dp的ac代码如下:

    #include <bits/stdc++.h>
    using namespace std;
    
    const int maxn=1000+5;
    int dp[maxn]; 
    int main()
    {
        int N,n;
        cin>>n;
        while(n--){
        cin>>N;
        memset(dp,0,sizeof(dp));
        dp[0]=dp[1]=1;
        dp[2]=2;
        dp[3]=3;
        for(int i=4;i<=N;i++){
        for(int j=0;j<i;j++){
        int tmp=i-pow(2,j);
        if(tmp>=0){
        dp[i]+=dp[tmp];
        dp[i]=dp[i]%1000000003;    
        }    
    
        else break;    
        }    
        }
        cout<<dp[N]<<endl;
        }
        return 0;
    }

    用递归只能过50%的数据

    #include <bits/stdc++.h>
    using namespace std;
    
    int solution(int N){
    int s=0; 
    if(N==1||N==0) return 1;
    if(N==2) return 2;
    if(N==3) return 3; 
    for(int i=0;pow(2,i)<=N;i++){
    s+=solution(N-pow(2,i));    
    }
        return s;
    } 
    int main()
    {
        int N,n;
        cin>>n;
        while(n--){
        cin>>N;
        cout<<solution(N)<<endl;
        }
        return 0;
    } 

    举一反三:

    1、兔子繁殖问题

    13世纪意大利数学家斐波那契在他的《算盘书》中提出这样一个问题:有人想知道一年内一对兔子可繁殖成多少对,便筑了一道围墙把一对兔子关在里面。已知一对兔子每一个月可以生一对小兔子,而一对兔子出生后.第三个月开始生小兔子假如一年内没有发生死亡,则一对兔子一年内能繁殖成多少对?

    标准的斐波那契数列又称兔子数列

    分析:这就是斐波那契数列的由来,本节的跳台阶问题便是此问题的变形,只是换了种表述形式。

    2、换硬币问题。

    想兑换100元钱,有1,2,5,10四种钱,问总共有多少兑换方法。

    const int N = 100;
    int dimes[] = { 1, 2, 5, 10 };
    int arr[N + 1] ;
    memset(arr,0,sizeof(arr));
    arr[0]=1;
    for (int i = 0; i < sizeof(dimes) / sizeof(int); ++i)
    {
        for (int j = dimes[i]; j <= N; ++j)
        {
            arr[j] += arr[j - dimes[i]];
        }
    }
    不一样的烟火
  • 相关阅读:
    Redis数据类型之字符串String
    Redis数据类型之列表List
    hdu 2066 一个人的旅行
    CDOJ 1221 Ancient Go
    如何避免javascript中的冲突
    利用锚点制作简单索引效果
    函数中的私有变量和特权方法
    Linux中常用命令cat
    java -jar参数运行方式设置classpath
    Linux中的数据重定向
  • 原文地址:https://www.cnblogs.com/cstdio1/p/11382192.html
Copyright © 2011-2022 走看看