【题解】走路

I 题意简述

  • 从原点出发,一步只能向右走、向上走或向左走。恰好走 N 步且不经过已走的点共有多少种走法?

  • 多组数据,每行输入一个数 N。对于每一组测试数据,每行输出一个数,答案对 12345 取模。

  • 对于100%的数据,保证 1N1000。时间限制 1s,空间限制 256MB

II 分析

fi 表示第 i 步之后所在的点有几种可能,ai,bi,ci 分别表示第 i 步向上走、向左走,向右走的方案数。那么 fi=ai+bi+ci.

容易发现,第 i1 步无论走到了哪里,接下来都可以向上走。所以有 ai=fi1.

i 步如果要向左走,那么第 i1 步就只能是向左走或向上走,而不能是向右走,所以有 bi=ai1+bi1.

i 步如果要向右走,那么第 i1 步只可以向上或向右走,不能向左走,所以有 ci=ai1+ci1.

所以:fi=fi1+ai1+bi1+ai1+ci1=fi1+(ai1+bi1+ci1)+ai1=fi1+fi1+ai1=2fi1+fi2

最后我们再定好范围,本题的递推式即为:fi=2fi1+fi2(i3). 按顺序计算即可。

III 代码

#include <bits/stdc++.h>
using namespace std;
const int N = 1005, mod = 12345;
int n, f[N];
int main(){
    f[1] = 3, f[2] = 7;
    for(int i = 3; i <= 1000; i++)
        f[i] = (2 * f[i - 1] + f[i - 2]) % mod;
    while(scanf("%d", &n) != EOF)
        printf("%d\n", f[n]);
    return 0;
}
posted @   Prülystic  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示