• 快手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]];
        }
    }
    不一样的烟火
  • 相关阅读:
    485串口接线
    mvc3 升级mvc5
    VB连接ACCESS数据库,使用 LIKE 通配符问题
    VB6 读写西门子PLC
    可用的 .net core 支持 RSA 私钥加密工具类
    解决 Win7 远程桌面 已停止工作的问题
    解决 WinForm 重写 CreateParams 隐藏窗口以后的显示问题
    解决安装 .net framework 发生 extracting files error 问题
    CentOS7 安装配置笔记
    通过特殊处理 Resize 事件解决 WinForm 加载时闪烁问题的一个方法
  • 原文地址:https://www.cnblogs.com/cstdio1/p/11382192.html
Copyright © 2020-2023  润新知