日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

爬楼梯2

發布時間:2023/12/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 爬楼梯2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

在你面前有一個n階的樓梯(n>=100且n<500),你一步只能上1階或3階。
請問計算出你可以采用多少種不同的方式爬完這個樓梯(到最后一層為爬完)。

輸入描述:

一個正整數,表示這個樓梯一共有多少階

輸出描述:

一個正整數,表示有多少種不同的方式爬完這個樓梯

示例1

輸入

100

輸出

24382819596721629

#include<iostream> #include<vector> #include<algorithm> #include<string> using namespace std; string add(string dp1,string dp2){string res="";int i=dp1.size()-1,j=dp2.size()-1,k=0;vector<int>data(max(dp1.size(),dp2.size())+1);fill(data.begin(),data.end(),0);int bit=0;for(;i>=0||j>=0;--i,--j){if(i>=0&&j>=0){data[k++]=dp1[i]-'0'+dp2[j]-'0';}else if(i>=0){data[k++]=dp1[i]-'0';}else if(j>=0){data[k++]=dp2[j]-'0';}}for(int t=0;t<k||bit;++t){//這個地方注意,不要想當然的認為進位只有1,也可能為2if(bit){res+=to_string((data[t]+bit)%10);bit=(data[t]+1)/10;}else{res+=to_string(data[t]%10);bit=data[t]/10;}}return string(res.rbegin(),res.rend()); } int main() {int n;cin>>n;vector<string>dp(n+1);dp[0]="1";dp[1]="1";dp[2]="1";dp[3]="2";if(n<=3) {cout<<dp[n]<<endl;return 0;}for(int i=4;i<=n;++i)dp[i]=add(dp[i-1],dp[i-3]);cout<<dp[n]<<endl;return 0; }

?

總結

以上是生活随笔為你收集整理的爬楼梯2的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。