zoukankan      html  css  js  c++  java
  • 爬楼梯

    在你面前有一个n阶的楼梯,你一步只能上1阶或2阶。
    请问计算出你可以采用多少种不同的方式爬完这个楼梯。
    输入描述:
    一个正整数n(n<=100),表示这个楼梯一共有多少阶
    输出描述:
    一个正整数,表示有多少种不同的方式爬完这个楼梯

    #include<iostream>
    #include<vector>
    #include<algorithm>
    using namespace std;
    
    string add(string&a,string&b){
        string res;
        int tmp=0;
        int i,j;
        for(i=a.length()-1,j=b.length()-1;i>=0&&j>=0;i--,j--){
        	res.push_back(char((a[i]-'0'+b[j]-'0'+tmp)%10+'0'));
            tmp=(a[i]-'0'+b[j]-'0'+tmp)/10;
                
        }
        
        	if(j!=-1){
        		for(;j>=0;j--){
        			res.push_back(char((b[j]-'0'+tmp)%10+'0'));
    		        tmp=(b[j]-'0'+tmp)/10;  
    			}
    		}
    		
    	if(i!=-1){
        		for(;i>=0;i--){
        				res.push_back(char((a[i]-'0'+tmp)%10+'0'));
    		            tmp=(a[i]-'0'+tmp)/10;
    			}
    		}
    
        if(tmp!=0)
          res.push_back(char(tmp+'0'));
        reverse(res.begin(),res.end());
        return res;
    }
    string numberOfMethods(int number){
        vector<string>dp(number+1,"0");
        dp[0]="1";
        for(int i=0;i<number;i++){
            dp[i+1]=add(dp[i+1],dp[i]);
            if(i+2<=number)
                dp[i+2]=add(dp[i+2],dp[i]);
        }
        return dp[number];
    }
    
    int main(){
        int n;
        cin>>n;
        cout<<numberOfMethods(n);
    }
  • 相关阅读:
    redis分布式锁
    pod资源清单
    zookeeper
    [置顶]【WP】 Writeup for SJTU-CTF ,被同级大佬和学长联合虐爆
    魔术师猜数【更优解】
    数学基础之线代
    向量是什么?
    矩阵与线性变换
    线性组合、张成的空间、基
    线性代数的本质
  • 原文地址:https://www.cnblogs.com/qiuhaifeng/p/11535060.html
Copyright © 2011-2022 走看看