/*
form csdn:
假設樓梯有m節,乙個人一不最多跨過n節,問有多少中方法(請給出**)
如m = 4, n = 2;
則有5種方法(1,1,1,1) ;(1,1,2);(1,2,1);(2,1,1);(2,2)
thebadtouch(iamsleepy - 一睡不醒) 給出了乙個很不錯的解法:
#include < stdio.h>
#include < memory.h>
#define min(a,b) (a< b?a:b)
#define max(a,b) (a> b?a:b)
typedef unsigned __int64 int64;//自己根據編譯器改,gcc就是unsigned long long
int main()
我的解法和上面的解法演算法思路是一樣的,我感覺我的更容易被看懂 :-)
我將公式:f(m)=f(m-1)+f(m-2)+...+f(m-n) 做了一下簡化:
f(m)=2f(m-1)-f(m-n-1)這樣子遞迴就很方便了。
*/#include
#include
int way(int num,int step)
int main(int argc,char *argv)
m=atoi(argv[1]);
n=atoi(argv[2]);
printf("there has %d way to up to the stair/n",way(m,n));
getchar();
}
走樓梯問題
宣告 題目來自 自己先做一遍。27.跳台階問題 題目 乙個台階總共有n級,如果一次可以跳1級,也可以跳2級。求總共有多少總跳法,並分析演算法的時間複雜度。這道題最近經常出現,包括microstrategy等比較重視演算法的公司都 曾先後選用過個這道題作為面試題或者筆試題。思路 一開始我想到的方法就是...
超級樓梯問題
時間限制 3000ms 記憶體限制 32768kb 統計描述 有一樓梯共m級,剛開始時你在第一級,若每次只能跨上一級或二級,要走上第m級,共有多少種走法?輸入輸入資料首先包含乙個整數n,表示測試例項的個數,然後是n行資料,每行包含乙個整數m 1 m 40 表示樓梯的級數。輸出對於每個測試例項,請輸出...
爬樓梯問題
ok,前段時間在一篇blog上看到乙個關於樓梯的面試題,大概內容如下 現有乙個人,規定他上樓梯時只能一步走乙個台階或者兩個台階。要求 給定任意樓梯的階數,求共有多少種方法爬完樓梯。如果有經驗可以看出,這是一道遞迴的題目。不過這個遞迴 程式怎麼寫呢?我的思路是可以這樣想,不管他前面 怎麼爬,最後總是要...