走楼梯2(Daimayuan Online Judge)

简介: 走楼梯2(Daimayuan Online Judge)

这题我的解法是使用状态机思维且看我下面的状态关系图:

这是我给出的三个状态,走一步用0状态表示,走一次两步用1状态表示,走两次两步用状态2表示,他们的转移关系如图

对图的解释:
1.走一步怎么转移过来的:可以选择继续走一步转移过来(如图中的自环);走两步无论第一次还是第二次走两步,可以下一次走一步。

2.走一次两步怎么转移过来的: 可以走一步后选择走两步。
3.连续走两次两步怎么转移过来的: 可以走一次两步后再接着走两步。

1.状态定义

定义f [ i , j ] f[i,j]f[i,j],i ii 为此时是第几个台阶,j jj为此时的状态是走一步转移过来的(0),还是连续两次走两步过来的(2),还是只走一次两步过来的(1),此时的方案数为f [ i ] [ 0 ] + f [ i ] [ 1 ] + f [ i ] [ 2 ] f[i][0]+f[i][1]+f[i][2]f[i][0]+f[i][1]+f[i][2]

2.状态表示

根据状态图可以得出下面的转移式

1.f [ i ] [ 0 ] + = f [ i − 1 ] [ 0 ] + f [ i − 1 ] [ 2 ] + f [ i − 1 ] [ 1 ] ; f[i][0]+=f[i-1][0]+f[i-1][2]+f[i-1][1];f[i][0]+=f[i1][0]+f[i1][2]+f[i1][1];

2.f [ i ] [ 1 ] + = f [ i − 2 ] [ 0 ] ; f[i][1]+=f[i-2][0];f[i][1]+=f[i2][0];

3.f [ i ] [ 2 ] + = f [ i − 2 ] [ 1 ] ; f[i][2]+=f[i-2][1];f[i][2]+=f[i2][1];

/*********************************************************************
    程序名:
    版权: Joecai
    作者: Joecai
    日期: 2022-03-27 21:17
    说明:
*********************************************************************/
#include <bits/stdc++.h>
using namespace std;
#define x first
#define y second
# define rep(i,be,en) for(int i=be;i<=en;i++)
# define pre(i,be,en) for(int i=be;i>=en;i--)
typedef pair<int, int> PII;
#define ll long long
#define endl "\n"
#define LOCAL
#define pb push_back
const int N = 2e5 + 10, INF = 0x3f3f3f3f;
int n;
ll f[100][3];
void solve()
{
  cin >> n;
  f[0][0] = 1;
  f[1][0] = 1;
  for (int i = 2; i <= n; i++)
  {
    f[i][0] += f[i - 1][0] + f[i - 1][2] + f[i - 1][1];
    f[i][1] += f[i - 2][0];
    f[i][2] += + f[i - 2][1];
  }
  cout << f[n][0] + f[n][1] + f[n][2] << endl;
}
int main() {
  //std::ios::sync_with_stdio(false);
  //std::cin.tie(nullptr);
  //#ifdef LOCAL
  //freopen("data.in.txt","r",stdin);
  //freopen("data.out.txt","w",stdout);
  //#endif
  int __ = 1;
  //cin>>__;
  while (__--)
  {
    solve();
  }
  return 0;
}

点个赞走吧~

目录
相关文章
|
双11 数据安全/隐私保护
这条马桶魔性广告,为何让九牧“抢”了双11的流量密码?
2024年双11,九牧集团凭借创新营销策略,线上销售额超20亿,霸榜多个平台。其“全家桶”广告巧妙结合谐音梗和用户痛点,引发广泛讨论和关注。通过儿童视角展现智能马桶的多功能性,精准触达不同人群,实现高转化率。九牧的成功表明,品牌需在技术创新和年轻化营销上下功夫,才能在竞争中脱颖而出。
341 12
|
编解码 索引 Python
python--根据任意非网格经纬度坐标,找到均匀网格点上最接近的经纬度坐标
需求:根据非规则经纬度坐标,查找均匀网格点上最接近的经纬度坐标,并提取该点上的变量。
python--根据任意非网格经纬度坐标,找到均匀网格点上最接近的经纬度坐标
一文教会你如何在论文中插入参考文献的角标
这篇文章介绍了在撰写论文时如何添加参考文献编号,并在文中插入这些参考文献的角标,以及如何通过点击文献编号跳转到对应的参考文献列表。
一文教会你如何在论文中插入参考文献的角标
|
C++
C++ 多线程之线程管理函数
这篇文章介绍了C++中多线程编程的几个关键函数,包括获取线程ID的`get_id()`,延时函数`sleep_for()`,线程让步函数`yield()`,以及阻塞线程直到指定时间的`sleep_until()`。
328 0
C++ 多线程之线程管理函数
|
12月前
|
人工智能 自然语言处理 搜索推荐
“AI拜年”火遍朋友圈,营销的终局是拼技术
2025年春节前夕,AI拜年成为新潮流。百度通过“春节祝福语”活动,利用文心大模型4.0 Turbo生成个性化拜年贺卡,用户只需上传照片和输入文案,即可获得高度逼真的定制贺卡。这项技术凭借iRAG(检索增强生成)实现了高精度图像生成,避免了常见的“AI味儿”,使AI生成的内容既真实又富有文化内涵,为普通用户带来了专业级的创作体验,也为图像生成的产业化落地铺平了道路。
567 9
将文字或txt转换成GBK或者UTF8编码
将文字或txt转换成GBK或者UTF8编码
1072 1
|
编解码 人工智能 移动开发
AIGC图像分辨率太低?快来试试像素感知扩散超分模型,你想要的细节都在这里
阿里巴巴最新自研的像素感知扩散超分模型已经开源,它把扩散模型强大的生成能力和像素级控制能力相结合,能够适应从老照片修复到AIGC图像超分的各种图像增强任务和各种图像风格,并且能够控制生成强度和增强风格。这项技术的直接应用之一是AIGC图像的后处理增强和二次生成,能够带来可观的效果提升。
1396 4
|
机器学习/深度学习 传感器 算法
基于MATLAB/CPLEX 的机组最优组合
基于MATLAB/CPLEX 的机组最优组合
实现 等高线图 - 基于python-matplotlib
实现 等高线图 - 基于python-matplotlib
472 0
实现 等高线图 - 基于python-matplotlib

热门文章

最新文章