洛谷——P1255 数楼梯
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洛谷——P1255 数楼梯相关的知识,希望对你有一定的参考价值。
题目描述
楼梯有N阶,上楼可以一步上一阶,也可以一步上二阶。
编一个程序,计算共有多少种不同的走法。
输入输出格式
输入格式:
一个数字,楼梯数。
输出格式:
走的方式几种。
输入输出样例
输入样例#1:
4
输出样例#1:
5
说明
用递归会太慢,需用递推
(60% N<=50 ,100% N<=5000)
也是曾经做过的一道题,单纯复习一下高精斐波那契模板
#include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #define N 5001 using namespace std; int n,f[N][N]={0},len[N]={0}; int read() { int x=0,f=1; char ch=getchar(); while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1; ch=getchar();} while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘; ch=getchar();} return x*f; } int fei(int a,int b,int c) { for(int i=1;i<=max(len[b],len[c]);i++) { f[a][i]+=f[b][i]+f[c][i]; if(f[a][i]>9) { f[a][i+1]=f[a][i]/10; f[a][i]=f[a][i]%10; len[a]=max(len[a],i+1); } else len[a]=max(len[a],i); } } int main() { n=read(); f[1][1]=1,f[2][1]=2,len[0]=1,len[1]=1; for(int i=3;i<=n;i++) fei(i,i-1,i-2); for(int i=len[n];i>=1;i--) printf("%d",f[n][i]); return 0; }
以上是关于洛谷——P1255 数楼梯的主要内容,如果未能解决你的问题,请参考以下文章