【题目链接】

ybt 1196:踩方格
OpenJudge NOI 2.6 4982:踩方格

【题目考点】

1. 递推

【解题思路】

  • 递推状态
    这里用左,右,上 代替 东,西,北。
    lil_ili​为第i步向左走的走法数量
    rir_iri​为第i步向右走的走法数量
    uiu_iui​为第i步向上走的走法数量
    fif_ifi​为第i步的总走法数量,有fi=li+ri+uif_i=l_i+r_i+u_ifi​=li​+ri​+ui​

  • 初始状态
    第0步走法:第0步不走,也算1种走法:f0=1f_0=1f0​=1
    第1步走法:l1=r1=u1=1l_1=r_1=u_1=1l1​=r1​=u1​=1, f1=3f_1=3f1​=3

  • 递推关系
    当前是第i步,考虑第i-1步的走法如何影响第i步的走法。

  1. 只有第i-1步是向左或上走时,第i步才能向左走。(因为如果之前是向右走的,现在此处左边是一个已经走过的坍塌的格子。)
    因而现在第i步向左走的走法数量是第i-1步向左和向上走法数量的加和。有:li=li−1+ui−1l_i=l_{i-1}+u_{i-1}li​=li−1​+ui−1​
  2. 只有第i-1步是向右或向上走时,第i步才能向右走。有:ri=ri−1+ui−1r_i=r_{i-1}+u_{i-1}ri​=ri−1​+ui−1​
  3. 无论之前怎么走,第i步都能向上走。有:ui=li−1+ri−1+ui−1u_i=l_{i-1}+r_{i-1}+u_{i-1}ui​=li−1​+ri−1​+ui−1​
    第i步的总走法为第i-1步向上,向左,向右走法的加和
    fi=li+ri+ui=li−1+ui−1+ri−1+ui−1+li−1+ri−1+ui−1=2(li−1+ui−1+ri−1)+ui−1f_i=l_i+r_i+u_i=l_{i-1}+u_{i-1}+r_{i-1}+u_{i-1}+l_{i-1}+r_{i-1}+u_{i-1}=2(l_{i-1}+u_{i-1}+r_{i-1})+u_{i-1}fi​=li​+ri​+ui​=li−1​+ui−1​+ri−1​+ui−1​+li−1​+ri−1​+ui−1​=2(li−1​+ui−1​+ri−1​)+ui−1​
    已知:fi−1=li−1+ui−1+ri−1f_{i-1} = l_{i-1}+u_{i-1}+r_{i-1}fi−1​=li−1​+ui−1​+ri−1​且ui−1=li−2+ri−2+ui−2=fi−2u_{i-1}=l_{i-2}+r_{i-2}+u_{i-2}=f_{i-2}ui−1​=li−2​+ri−2​+ui−2​=fi−2​
    所以:fi=2fi−1+fi−2f_i=2f_{i-1}+f_{i-2}fi​=2fi−1​+fi−2​

【题解代码】

解法1:以第i步总走法数量为状态

#include <bits/stdc++.h>
using namespace std;
int main()
{int n, f[25];cin >> n;f[0] = 1, f[1] = 3;for(int i = 2; i <= n; ++i)f[i] = 2*f[i-1] + f[i-2];cout << f[n];return 0;
}

解法2:以第i步向左、右、上方向走法数量为状态

#include <bits/stdc++.h>
using namespace std;
#define N 25
int main()
{int n, l[N], r[N], u[N];l[1] = r[1] = u[1] = 1;cin >> n;for(int i = 2; i <= n; ++i){l[i] = l[i-1] + u[i-1];r[i] = r[i-1] + u[i-1];u[i] = l[i-1] + r[i-1] + u[i-1];}cout << l[n] + r[n] + u[n];return 0;
}

信息学奥赛一本通 1196:踩方格 | OpenJudge NOI 2.6 4982:踩方格相关推荐

  1. 信息学奥赛一本通 1190:上台阶 | OpenJudge NOI 2.3 3525:上台阶

    [题目链接] ybt 1190:上台阶 OpenJudge NOI 2.3 3525:上台阶 注:ybt 1190最大数据数量为71,而OpenJudge 2.3 3525中最大数据数量为100.如果 ...

  2. 信息学奥赛一本通 1225:金银岛 | OpenJudge NOI 4.6 1797:金银岛

    [题目链接] ybt 1225:金银岛 OpenJudge NOI 4.6 1797:金银岛 [题目考点] 1. 贪心 2. 部分背包问题 [解题思路] 该题为部分背包问题 1. 贪心选择性质的证明: ...

  3. 信息学奥赛一本通 1226:装箱问题 | OpenJudge NOI 4.6 19:装箱问题

    [题目链接] ybt 1226:装箱问题 OpenJudge NOI 4.6 19:装箱问题 [题目考点] 1. 贪心 [解题思路] 该题说是三维立方体,实际上无论是包裹还是产品,高度都是h,因而不用 ...

  4. 信息学奥赛一本通 1216:红与黑 / OpenJudge NOI 2.5 1818

    [题目链接] ybt 1216:红与黑 OpenJudge NOI 2.5 1818:红与黑 [题目考点] 1. 连通块问题 2. 深搜/广搜 [解题思路] 1. 深搜 从第一个格子出发,遍历所有可以 ...

  5. 信息学奥赛一本通 1115:直方图 | OpenJudge NOI 1.9 09

    [题目链接] ybt 1115:直方图 OpenJudge NOI 1.9 09:直方图 [题目考点] 1. 散列存储 也叫哈希存储.其思想为:将要存储的值通过某种算法映射到存储地址,映射算法为散列函 ...

  6. 信息学奥赛一本通 1114:白细胞计数 | OpenJudge NOI 1.9 08

    [题目链接] ybt 1114:白细胞计数 OpenJudge NOI 1.9 08:白细胞计数 [题目考点] 1. 求数组中最大值及其下标 方法1:保存最大值和下标 设置临时最大值变量mx,mx的初 ...

  7. 信息学奥赛一本通 1109:开关灯 | OpenJudge NOI 1.5 31:开关灯

    [题目链接] ybt 1109:开关灯 OpenJudge NOI 1.5 31:开关灯 [题目考点] 1. 模拟 2. 循环.数组 3. 用逗号分隔输出 设标志位:isFirst,表示现在输出的是否 ...

  8. 信息学奥赛一本通 1073:救援 | OpenJudge NOI 1.5 19:救援

    [题目链接] ybt 1073:救援 OpenJudge NOI 1.5 19:救援 [题目考点] 1. 直角坐标系下某点到原点的距离 点(x,y)(x,y)(x,y)到原点的距离d=x2+y2d = ...

  9. 信息学奥赛一本通 1070:人口增长 | OpenJudge NOI 1.5 14:人口增长问题

    [题目链接] ybt 1070:人口增长 OpenJudge NOI 1.5 14:人口增长问题 [题目考点] 1. 循环求幂 设变量r初始值为1:int r = 1; 循环n次每次循环中输入变量a, ...

  10. 信息学奥赛一本通 1060:均值 | OpenJudge NOI 1.5 03

    [题目链接] ybt 1060:均值 OpenJudge NOI 1.5 03:均值 [题目考点] 1. while循环 2. for循环 循环n次的两种写法 for(int i = 0; i < ...

最新文章

  1. 环境微生物期刊—Bioresource Technology
  2. StringBuffer 和 StringBuilder 的 3 个区别!
  3. Enums and Structs in C#(C#里的枚举和结构) (from codeproject)
  4. 这焊接技术,大开眼界了......
  5. ik分词和jieba分词哪个好_Pubseg:一种单双字串的BiLSTM中文分词工具
  6. msflexgrid允许大选择_特大型矿井提升机结构和布置方式的选择
  7. python数组追加_python向数组追加数据库
  8. C++ HOOK 详解
  9. Linux C/C++ —— intent 工具,time 命令
  10. 自动基线校正 python_安全运维中基线检查的自动化之ansible工具巧用
  11. python编程从入门到实战的16堂课_好评如潮,百万Python程序员的「案头必备书」,终于出配套习题解答了!...
  12. P3388 【模板】割点(割顶)
  13. POP3 SMTP 协议分析学习笔记
  14. 三国演义人物出场次数
  15. 云计算时代商业银行的战略机会
  16. coursera—Mini-project #1 - Rock-paper-scissor-lizard-Spock
  17. matlab绘制空间摆线轨迹
  18. 2013年多益网络校园招聘笔试题
  19. java equest 作用_JSP四大作用域及请求范围总结
  20. 计算机基础知识学习第一课,第一课计算机基础知识~.ppt

热门文章

  1. Codevs 1183 泥泞的道路
  2. word文字铺满页面_word文字怎么铺满
  3. 计算机毕设人寿保险项目,2017年中国人寿集团在京各直属单位接收毕业生情况公示...
  4. 个人网站怎么申请支付接口?
  5. SDL渲染3D动画图片
  6. 微软五笔 v1.0 下载
  7. 项目中Makefile写法的一种参考
  8. 内网端口映射软件之80端口映射发布网站
  9. 2.(leaflet篇)leaflet加载接入百度地图
  10. 简单计算空气质量指数