程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> iostream-藍橋杯 未名湖的煩惱 fun(m-1,n)+fun(m,n-1)這句代碼詳細解釋

iostream-藍橋杯 未名湖的煩惱 fun(m-1,n)+fun(m,n-1)這句代碼詳細解釋

編輯:編程解疑
藍橋杯 未名湖的煩惱 fun(m-1,n)+fun(m,n-1)這句代碼詳細解釋

#include "iostream"

using namespace std;

int fun(int m,int n)

{

if(m {
return 0;
}
else if (n==0)
{
return 1;
}
else return fun(m-1,n)+fun(m,n-1);
}
int main()
{
int m,n;
cout cin>>m>>n;

cout<<"有"<<fun(m,n)<<"排序方法"<<endl;

return 0;

}

最佳回答:


fun(m,n)表示的是在還鞋的有m個,借鞋子的有n個的情況下,排隊合法的情況的個數。也就是對m+n個人進行排隊,且保證按照正確規則排列的隊伍的數量。
fun(m-1,n)+fun(m,n-1)拆成fun(m-1,n),fun(m,n-1):
fun(m-1,n)表示當前最前面的一個位置,作為還鞋子的位置,那麼剩下的人進行排隊,能具有的合法的隊伍的數量(合法指的是滿足條件的隊伍)。
fun(m,n-1)表示當前最前面的一個位置,作為借鞋子的位置,那麼剩下的人進行排隊,能具有的合法的隊伍的數量。
整理一下思路:
隊伍長度為m+n,那麼最前面的一個位置是換鞋子或者是借鞋子的話對後面的情況都是有影響的,如果最前面的位置是還鞋子的話,那麼剩下的隊伍長度為(m-1)+n,其中還鞋子的為m-1個,借鞋子的為n個,繼續遞歸求這種情況的隊伍合法數量
;如果最前面的位置是借鞋子的話,那麼剩下的隊伍長度為m+(n-1),其中還鞋子的為m個,借鞋子的為n-1個,繼續遞歸求這種情況的隊伍合法數量。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved