zoukankan      html  css  js  c++  java
  • 激光样式

    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;
    }
  • 相关阅读:
    SLAM图优化g2o
    AI人工智能天机芯芯片
    Tengine MLOps概述
    Tengine Framework基础
    Tengine Web服务器概述
    华为MDC软件架构
    4D毫米波雷达Radar
    MindSpore循环神经网络
    构建编译TVM方法
    芯片工具链概述
  • 原文地址:https://www.cnblogs.com/8023spz/p/10747735.html
Copyright © 2011-2022 走看看