题目描述

楼梯有N阶,上楼可以一步上一阶,也可以一步上二阶。

编一个程序,计算共有多少种不同的走法。

输入输出格式

输入格式:

一个数字,楼梯数。

输出格式:

走的方式几种。

输入输出样例

输入样例#1: 复制

4
输出样例#1: 复制

5

说明

用递归会太慢,需用递推

(60% N<=50 ,100% N<=5000)

思路:数学+高精

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n;
struct nond{
int num[];
}f[];
void jia(int pos){
f[pos].num[]=max(f[pos-].num[],f[pos-].num[]);
for(int i=;i<=f[pos].num[];i++)
f[pos].num[i]=f[pos-].num[i]+f[pos-].num[i];
for(int i=;i<=f[pos].num[];i++)
if(f[pos].num[i]>=){
if(i==f[pos].num[]) f[pos].num[]++;
f[pos].num[i+]+=;
f[pos].num[i]%=;
}
for(;f[pos].num[]>=;f[pos].num[]--) if(f[pos].num[f[pos].num[]]) break;
}
int main(){
scanf("%d",&n);
if(n==){ cout<<"";return ;}
f[].num[]=f[].num[]=f[].num[]=f[].num[]=;
for(int i=;i<=n;i++) jia(i);
for(int i=f[n].num[];i>=;i--) cout<<f[n].num[i];
}

最新文章

  1. effective OC2.0 52阅读笔记(六 块与大中枢派发)
  2. 微信OAuth2.0网页授权
  3. [原创工具] ListView 调色盘 (Free)
  4. [LintCode] Pow(x, n) 求x的n次方
  5. ios沙盒路径
  6. BZOJ 2331 地板
  7. HDU 1312 Red and Black --- 入门搜索 DFS解法
  8. shutdown 和closesocket
  9. Android Studio快速开发之道(各种语法糖)
  10. java转义字符
  11. final、抽象类、接口、多态、
  12. CSS background 属性 总结
  13. tiny210移植linux内核(3.0.8)杂项
  14. Add Two Numbers 2015年6月8日
  15. UOJ #460 新年的拯救计划
  16. 「雅礼集训 2017 Day5」矩阵
  17. Mave------pom.xml标签详解
  18. jQeury 批量删除
  19. jenkins+sonarQube代码质量扫描 并排除指定的目录
  20. squid代理允许FTP访问设置

热门文章

  1. sysctl---内核参数相关设置
  2. parted---磁盘分区
  3. CodeForces 400A Inna and Choose Options
  4. vmware下ubuntu的网络配置
  5. Windows安装两个mysql数据库步骤
  6. Android禁止ViewPager的左右滑动
  7. hdoj--1342--Lotto(dfs)
  8. 【基础篇】Android手动卸载虚拟机程序
  9. Linux常用浏览器
  10. 遇到的兼容性bug