zoukankan      html  css  js  c++  java
  • <每日一题> Day5:简单递推两题

     原题链接

    参考代码:

      

     1 #include <iostream>
     2 using namespace std;
     3 
     4 typedef long long  ll;
     5 const ll  maxn = 50 + 5;
     6 ll  dp[maxn];
     7 
     8 int main() {
     9     ll  t, a, b, now;
    10     dp[2] = 1;
    11     dp[3] = 2;
    12     for(int i = 4; i <= maxn; i ++) {
    13         dp[i] = dp[i - 1] + dp[i - 2];
    14     }
    15     cin >> t;
    16     while(t --) {
    17         cin >> a >> b;
    18         now = b - a + 1;
    19         cout << dp[now] << endl;
    20     }
    21     return 0;
    22 }

    原题链接

      参考代码:

     1 /*
     2     递推思想,很容易可以手推出3种情况,我们可以确定的是,在放第涂第n个格子的时候前n - 1个格子已经涂完了,所以对于第n个格子,我们分为以下两种情况
     3         <1>:前n - 1个格子已经涂完了,涂的方法有dp[n - 1]种,我们确定第n - 1和第n个不同色,并且要求第n个和第一个不同色,所以第n个只有一种图法,乘法规律我们知道在确定前n - 1种格子的涂法时第n个有dp[n - 1]种图法。
     4         <2>:前n - 2个格子已经涂完了,涂的方法有dp[n - 2]种,这时我们知道,第n - 1个格子的颜色肯定是与第一个格子相同的,因为如果他们不同,则第n个格子又只有一种图法,和情况一是一样的,第n个格子我们有两种图法,所以由乘法规律的在提前确定n - 2个格子的涂法时第n个格子有2 * dp[n - 2]种涂法。
     5 */
     6 #include <cstdio>
     7 using namespace std;
     8 
     9 typedef long long ll;
    10 const int maxn = 50 + 5;
    11 ll dp[maxn];
    12 
    13 int main() {
    14     int n;
    15     dp[1] = 3;
    16     dp[2] = 6;
    17     dp[3] = 6;
    18     for(int i = 4; i <= maxn; i ++) {
    19         dp[i] = dp[i - 1] + 2 * dp[i - 2];
    20     }
    21     while(~scanf("%d", &n)) {
    22         printf("%lld
    ", dp[n]);
    23     }
    24     return 0;
    25 }
  • 相关阅读:
    Golang里边的map变量是什么?
    Golang map的底层实现
    方法和函数的区别
    Golang 对 对象和指针 的理解
    React 部分
    前端开发概述、html、css基础
    服务器核心知识
    常用模块8.7
    2017.8.2迭代器和生成器
    2017.7.18可变/不可变类型,符号运算及其流程控制
  • 原文地址:https://www.cnblogs.com/bianjunting/p/10924412.html
Copyright © 2011-2022 走看看