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;
    }
  • 相关阅读:
    ASP.NET的运行原理与运行机制
    VS2008快捷键
    (五)SubSonic的存储过程操作
    110个Oracle常用函数整理汇总
    ASP.NET中HttpModule和HttpHandler的作用及用法
    报表统计(sql面试题)
    ASP.NET C# 数字格式化输出
    ASP.NET Global.ascx 事件大全
    ASP.NET中GUID
    asp.net 页面转向 Response.Redirect, Server.Transfer, Server.Execute的区别
  • 原文地址:https://www.cnblogs.com/8023spz/p/10747735.html
Copyright © 2011-2022 走看看