zoukankan      html  css  js  c++  java
  • 爬楼梯 (大数加法)

    时间限制:1秒

    空间限制:65536K

    在你面前有一个n阶的楼梯,你一步只能上1阶或2阶。
    请问计算出你可以采用多少种不同的方式爬完这个楼梯。

    输入描述:
    一个正整数n(n<=100),表示这个楼梯一共有多少阶

    输出描述:
    一个正整数,表示有多少种不同的方式爬完这个楼梯

    输入例子1:
    5

    输出例子1:
    8

    思路:大数相加。long long也溢出。

     1 #include <iostream>
     2 #include <vector>
     3 #include <string>
     4 using namespace std;
     5 string add(string s1, string s2) {
     6     int len1 = s1.length(), len2 = s2.length();
     7     int maxlen = max(len1, len2) + 1;
     8     string res(maxlen, '0');
     9     int flag = 0;
    10     int i = len1 - 1, j = len2 - 1, k = maxlen - 1;
    11     for (; i >= 0 && j >= 0; i--, j--) {
    12         int temp = (s1[i] - '0') + (s2[j] - '0') + flag;
    13         flag = temp / 10;
    14         res[k--]= temp % 10 + '0';
    15     }
    16     while (i >= 0) {
    17         int temp = s1[i--] - '0' + flag;
    18         flag = temp / 10;
    19         res[k--] = temp % 10 + '0';
    20     }
    21     while (j >= 0) {
    22         int temp = s2[j--] - '0' + flag;
    23         flag = temp / 10;
    24         res[k--] = temp % 10 + '0';
    25     }
    26     res[k] = flag + '0';
    27     if (flag) {
    28         return res;
    29     } else {
    30         return res.substr(1);
    31     }
    32 }
    33 string jumpFloor(int number) {
    34     vector<string> dp(number + 1, "1");
    35     for (int i = 2; i <= number; i++) {
    36         dp[i] = add(dp[i - 1], dp[i - 2]);
    37     }
    38     return dp[number];
    39 }
    40 
    41 int main() {
    42     int n;
    43     cin >> n; 
    44     cout << jumpFloor(n) << endl;
    45 }
  • 相关阅读:
    二、魔法函数
    Metaclasses
    一、python中的一切皆对象
    三、鸭子类型
    SQL进行排序、分组、统计的10个新技巧
    输入地址栏可以编辑页面的js
    项目开发中常用JS表单取值方法
    [导入]通用的分页存储过程
    107个常用Javascript语句
    [导入]事务处理
  • 原文地址:https://www.cnblogs.com/qinduanyinghua/p/11440864.html
Copyright © 2011-2022 走看看