從棋盤左上角到右下角共有多少種走法


請編寫一個函數(允許增加子函數),計算n x m的棋盤格子(n為橫向的格子數,m為豎向的格子數)沿着各自邊緣線從左上角走到右下角,總共有多少種走法,要求不能走回頭路,即:只能往右和往下走,不能往左和往上走。———牛客

對於n*m的棋盤,可分為以下兩種情況:

1.當n == 1或 m == 1時,共有n+m種走法(不為1的加1種);

2.當n、m都大於1時,那么最終走到右下角只有兩條路徑:

(1)從[n-1, m]到右下角;

(2)從[n, m-1]到右下角。

假設從左上角走到[n, m]位置有f(n, m)種走法,則:n*m的棋盤從左上角到右下角共有f(n-1, m) + f(n, m-1)種走法。

因此,我們可以使用遞歸解決上述問題,退出條件為1.

實現:

1 int func(int n, int m)
2 {
3     if(n == 1 || m == 1)
4         return n+m;
5     else
6         return func(n-1, m) + func(n, m-1);
7 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM