• 激光样式


    x星球的盛大节日为增加气氛,用30台机光器一字排开,向太空中打出光柱。
    安装调试的时候才发现,不知什么原因,相邻的两台激光器不能同时打开!
    国王很想知道,在目前这种bug存在的情况下,一共能打出多少种激光效果?


    显然,如果只有3台机器,一共可以成5种样式,即:
    全都关上(sorry, 此时无声胜有声,这也算一种)
    开一台,共3种
    开两台,只1种


    30台就不好算了,国王只好请你帮忙了。


    要求提交一个整数,表示30台激光器能形成的样式种数。

    答案:

    代码:

    可以搜索解决

    #include <iostream>
    
    using namespace std;
    typedef long long ll;
    int n,c;
    void dfs(int k,int last) {
        if(k >= n) {
            c ++;
            return;
        }
        dfs(k + 1,0);
        if(!last) dfs(k + 1,1);
    }
    int main() {
        scanf("%d",&n);
        dfs(0,0);
        printf("%d",c);
        return 0;
    }

     也可以动态规划

    #include <iostream>
    
    using namespace std;
    typedef long long ll;
    int n;
    int dp[100][2];
    int main() {
        scanf("%d",&n);
        dp[0][1] = 1;
        dp[0][0] = 1;
        for(int i = 1;i < n;i ++) {
            dp[i][0] += dp[i - 1][0] + dp[i - 1][1];
            dp[i][1] += dp[i - 1][0];
        }
        printf("%d",dp[n - 1][0] + dp[n - 1][1]);
        return 0;
    }

     而且题目答案符合斐波那契数列。

    #include <iostream>
    
    using namespace std;
    typedef long long ll;
    int n;
    int f[100];
    int main() {
        scanf("%d",&n);
        f[1] = 2;
        f[2] = 3;
        for(int i = 3;i <= n;i ++) {
            f[i] = f[i - 1] + f[i - 2];
        }
        printf("%d",f[n]);
        return 0;
    }
  • 相关阅读:
    【CSS3】纯CSS3制作页面切换效果
    【CSS3】分类豆腐块菜单浮动效果
    【CSS3】使用CSS3制作全屏切换效果
    【JQ】toggle / slideToggle / fadeToggle 的区别
    【CSS3 + 原生JS】上升的方块动态背景
    【CSS3 + 原生JS】移动的标签
    【原生JS】简单取随机数
    【原生JS】键盘事件
    【CSS3】loading动画
    【原生JS】层叠轮播图
  • 原文地址:https://www.cnblogs.com/8023spz/p/10747735.html
Copyright © 2020-2023  润新知