https://www.luogu.org/problemnew/show/P1192
题目描述
有N级的台阶,你一开始在底部,每次可以向上迈最多K级台阶(最少11级),问到达第N级台阶有多少种不同方式。

输入输出格式
输入格式:
两个正整数N,K。

输出格式:
一个正整数,为不同方式数,由于答案可能很大,你需要输出ans mod 100003后的结果。

输入输出样例
输入样例#1:
5 2
输出样例#1:
8
Ac_code:
way1:

/*
根据最直接规律:f(n) = f(n-1)+f(n-2)+...f(n-k),
直接模拟
*/
#include <stdio.h>
#define mod 100003
int a[100005];
int main()
{int n,k;a[0] = a[1] = 1;scanf("%d%d",&n,&k);for(int i = 2; i <= n; i++){for(int j = 1; i-j>=0&&j<=k; j++){a[i] += a[i-j];a[i] %= mod;}}printf("%d\n",a[n]);return 0;
}

way2:

/*
进一步找规律,效率明显提高:
1.  n<= k:  f(n+1)=f(n)*2;
2.  n > k: f(n+1) = f(n)*2 - f(n-k);
*/
#include <stdio.h>
#define mod 100003
int a[100005];
int main()
{int n,k;a[0] = a[1] = 1;scanf("%d%d",&n,&k);for(int i = 2; i <= k; i++)//或者只用这层循环a[i]=2*a[i-1]{for(int j = 1;i-j>=0&&j<=k; j++){a[i] += a[i-j];a[i] %= mod;}//a[i] = 2*a[i-1]%mod;}for(int i = k+1; i <= n; i++){a[i] = (2*(a[i-1])%mod-a[i-1-k]%mod+mod)%mod;}printf("%d\n",a[n]);return 0;
}

way3:

/*
看了一下别人的题解,说可以记忆化爆搜。
但是n=100000时,没有输出,提交居然AC,这题数据太水!
*/
#include <stdio.h>
#define mod 100003
int a[100005],k;
int Find(int x)
{if(a[x])return a[x];int sum = 0;for(int i = 1; x-i>=0&&i<=k; i++){sum = (sum + Find(x-i)) % mod;}a[x] = sum;return sum;
}
int main()
{int n;a[0] = a[1] = 1;scanf("%d%d",&n,&k);printf("%d\n",Find(n));return 0;
}

P1192 台阶问题(递推)相关推荐

  1. 剑指Offer #08 跳台阶(递推)

    题目来源:牛客网-剑指Offer专题 题目地址:跳台阶 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 题目解析 这是 ...

  2. python跳台阶_递推典型算法:猴子爬山,跳台阶,爬楼梯(牛客网)、魔法深渊(快手)----Python、Java...

    递推算法的基本思想是把一个复杂的.庞大的计算过程转化为简单过程的多次重复,其首要问题是得到相邻的数据项之间的关系,即递推关系.以猴子爬山为例. 1.问题的提出 一个顽猴在一座有30级太假的小山上爬山活 ...

  3. nyoj 76-超级台阶 (递推)

    76-超级台阶 内存限制:64MB 时间限制:1000ms 特判: No 通过数:8 提交数:12 难度:3 题目描述: 有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共 ...

  4. 蓝桥杯 第39级台阶 递推动态规划

    网上答案写的都和狗屎一样.看不下去.自己写一个 描述如下 小明刚刚看完电影<第39级台阶>,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级! 站在台阶前,他突然又想着一个问题:如果 ...

  5. 剑指 Offer 10- II. 青蛙跳台阶问题 -递归法和数学递推法

    剑指 Offer 10- II. 青蛙跳台阶问题 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 答案需要取模 1e9+7(1000000007), ...

  6. 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?(PHP 递推,动态规划)

    假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 递推规则详解 在一个2XN的长方形方格中铺满1X ...

  7. 基础算法 —— 递推算法

    [概述] 递推算法:通过已知条件,利用相邻的数据项间的关系(即:递推关系),得出中间推论,直至得到结果的算法. 递推关系:给定一个数的序列H0,H1,-,Hn,若存在整数N0,使当n>N0时,可 ...

  8. 算法设计与分析 1 递推与递归

    递推与递归 Fibonacci #include<stdio.h> #pragma warning (disabled:4996) #define MAX 100 int f[MAX];/ ...

  9. hdu 1723 DP/递推

    题意:有一队人(人数 ≥ 1),开头一个人要将消息传到末尾一个人那里,规定每次最多可以向后传n个人,问共有多少种传达方式. 这道题我刚拿到手没有想过 DP ,我觉得这样传消息其实很像 Fibonacc ...

  10. 算法学习——递推之猴子爬山

    算法描述 一个猴子沿着一座山的n级台阶向上爬,猴子上山一步可跳1级或3级,试求上山的n级台阶有多少种不同的爬法 算法思路 利用递推的思想,猴子在第n级台阶上,它之前可能在第n-1级台阶上或者是在n-3 ...

最新文章

  1. flex3通过fluorinefx跟asp.net进行数据交互
  2. 第一次做安卓项目使用的开源框架列表
  3. Java必须了解的“递归”与“IO流”!!!
  4. 【Qt】DOM读取XML文档
  5. 理解CMS GC日志
  6. ajax 传递参数中文乱码解决办法
  7. 《C语言编程魔法书:基于C11标准》——1.3 主流C语言编译器介绍
  8. 深度学习(03)-- CNN学习
  9. pytorch torch.nn.RNN
  10. 有人劫持智能设备报假警,并直播出警画面
  11. vim插件command-t安装
  12. HTML5 语义元素
  13. 汽车行业DBC文件解析 | Python 解析dbc文件
  14. 局域网DNS劫持,输入网址会跳转到其他的广告页
  15. 控件库中的Botton控件简述
  16. 编辑为什么建议转投_编辑回信解读 —“建议转投子刊”实例
  17. 吉尔电子烟获1200万天使轮融资 1
  18. CI/CD-Jenkins(邮箱、钉钉通知)
  19. 学电脑编程入门要先学习什么
  20. 气节白露怎么翻译 white dew

热门文章

  1. mysql 两列数据互换_mysql 实现互换表中两列数据方法简单实例
  2. cgi硬盘安装增强版怎么用_天津专业补光灯怎么用-安装
  3. GCN(二)GCN模型介绍
  4. 厉害了,在Pandas中用SQL来查询数据,效率超高
  5. Python超强全方位学习路线分享(附视频+书籍+面试链接)
  6. 漫画:互联网人的十二时辰,程序员有多惨?
  7. 有哪些命令行工具堪称神器?
  8. html的选择器child,css child选择器妙用
  9. matlab的yalmip为什么这么慢,Yalmip问题请教
  10. html安卓关闭输入面板,tabletpc输入面板关闭不了怎么办(tablet pc输入面板关闭方法)...