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);
    }
  • 相关阅读:
    洛谷P1357 Solution
    洛谷P3469 Solution
    洛谷P2617 Solution
    CF818F Solution
    CF802K Solution
    CF519E Solution
    在代码中改变log的级别
    Java非对称加密解密
    mvn test 远程调试
    rsyn实现服务器源码同步
  • 原文地址:https://www.cnblogs.com/qiuhaifeng/p/11535060.html
Copyright © 2011-2022 走看看