zoukankan      html  css  js  c++  java
  • 递推求解

    记录点滴。

      1 /*
      2 2015.6    HT
      3 ACM Work_4
      4 
      5 */
      6 #include <iostream>
      7 #include<algorithm>
      8 using namespace std;
      9 
     10 /*
     11 超级楼梯
     12 一楼梯共M级,刚开始在第一级,每次只能跨上一级或二级
     13 要走上第M级,共有多少种走法?
     14 输入每行包含一个整数M(1<=M<=40),表示楼梯的级数
     15 
     16 直接构造一个40以内的斐波那契数列即可,f1=1,f2=1
     17 */
     18 //int sum, m, a[41];
     19 //void f()
     20 //{
     21 //    a[1] = 1;
     22 //    a[2] = 1;
     23 //    for (int i = 3; i <= 40; i++)
     24 //        a[i] = a[i - 1] + a[i - 2];
     25 //}
     26 //
     27 //int main()
     28 //{
     29 //    int n;
     30 //    f();
     31 //    cin >> n;
     32 //    while (n--)
     33 //    {
     34 //        cin >> m;
     35 //        cout << a[m] << endl;
     36 //    }
     37 //    return 0;
     38 //}
     39 
     40 
     41 
     42 /*
     43 不容易系列之(3)—— LELE的RPG难题
     44 有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子
     45 每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法
     46 (0<n<=50)
     47 
     48 1.前面n-1个方格填好了色,有f(n-1)种情况,此时第n-1个跟第一个颜色一定不一样,所以第n个只有一种选择
     49 2.对前面n-2个方格填好色,有f(n-2)种情况,第n-1个空格颜色跟第一个颜色一样,最后第n个方格可以填两种颜色,所以是 2*f(n-2)
     50 推出f(n)=f(n-1)+2(n-2)    n>=4
     51 */
     52 //int main()
     53 //{
     54 //    int i;
     55 //    // int会溢出
     56 //    __int64 d[51] = { 0, 3, 6, 6 };
     57 //    for (i = 4; i < 51; i++)
     58 //        d[i] = d[i - 1] + 2 * d[i - 2];
     59 //    while (cin >> i)
     60 //        cout << d[i] << endl;
     61 //
     62 //    return 0;
     63 //}
     64 
     65 
     66 
     67 /*
     68 折线分割平面
     69 f(n) = 2n^2-n+1
     70 
     71 封闭曲线分割平面
     72 f(n) = n^2-n+2
     73 
     74 平面分割空间
     75 f(n) = (n^3+5n)/6+1
     76 */
     77 
     78 
     79 
     80 /*
     81 悼念512汶川大地震遇难同胞——重建希望小学
     82 学校教室的长度为n米,宽度为3米,现在我们有2种地砖,规格分别是1米×1米,2米×2米,
     83 如果要为该教室铺设地砖,请问有几种铺设方式呢?
     84 
     85 s[n]=s[n-1]+2*s[n-2]
     86 */
     87 int main()
     88 {
     89     int n[31], i, m, t;
     90     n[1] = 1;
     91     n[2] = 3;
     92     for (i = 3; i <= 30; ++i)
     93     {
     94         n[i] = n[i - 1] + n[i - 2] * 2;
     95     }
     96     cin >> t;
     97     while (t--)
     98     {
     99         cin >> m;
    100         cout << n[m] << endl;
    101     }
    102     return 0;
    103 }
    104 
    105 
    106 
    107 /*
    108 统计问题
    109 你可以向左走,可以向右走,也可以向上走
    110 走过的格子立即塌陷无法再走第二次,求走n步不同的方案数
    111 
    112 设往上走的步数为a(n),往左或往右走的步数为b(n)
    113 f(n)=a(n)+b(n)
    114 a(n)=a(n-1)+b(n-1), b(n)=2*a(n-1)+b(n-1)
    115 化简得 f(n) = 2*f(n-1) + f(n-2)
    116 */
  • 相关阅读:
    运营是一个产品价值传递的过程,互联网营销 狼人:
    资深设计师Tony Ventrice解析手机游戏开发的四个层次 狼人:
    ubuntu 10.10下搭建android开发环境 安装必要工作用软件 狼人:
    iOS概述 狼人:
    关于Android的一些设计 狼人:
    企业中两个重要而又容易被忽视的角色,互联网营销 狼人:
    PySide教程:简单的对话框应用程序 狼人:
    PySide教程:PySide中使用Qt属性 狼人:
    网页的手机版本是否值得去做?,互联网营销 狼人:
    元素类型jQuery选择器
  • 原文地址:https://www.cnblogs.com/ht-beyond/p/4562170.html
Copyright © 2011-2022 走看看