題目描述
請計算n*m的棋盤格子(n為橫向的格子數,m為豎向的格子數)沿著各自邊緣線從左上角走到右下角,總共有多少種走法,要求不能走回頭路,即:只能往右和往下走,不能往左和往上走,
本題含有多組樣例輸入,
輸入描述:
每組樣例輸入兩個正整數n和m,用空格隔開,(1≤n,m≤8)
輸出描述:
每組樣例輸出一行結果
示例1
輸入
2 2
1 2
輸出
6
3
解題思路
首先注意要回圈輸入
while(cin>>m>>n)
本題使用遞回解決
從(0,0)走到(m,n)的方案數
等于從(0,0)走到(m-1,n)和(m,n-1)的方案數相加
繼續遞回
因為只能往右和往下走
那么(0,n)只有一種方案-因為只能往左走
(m,0)也只有一種方案-因為只能往下走
#include<iostream>
using namespace std;
int pathnum(int n, int m)
{
if (m == 0 || n == 0)
return 1;
return pathnum(n, m - 1) + pathnum(n - 1, m);
}
int main()
{
int m, n;
//回圈輸入
while (cin >> m >> n)
{
cout << pathnum(m, n) << endl;
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/282390.html
標籤:其他
上一篇:Unity使用心得 之 ?? Unity中 多種相機視角跟隨方式 (第一、三人稱都有哦,快來看看叭)
下一篇:WSL安裝、升級和優化使用
