黄焖鸡米饭啊 2016-02-01 09:24 采纳率: 50%
浏览 1711
已采纳

蓝桥杯 未名湖的烦恼 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;

}

  • 写回答

4条回答 默认 最新

  • 林深 2016-02-02 03:05
    关注

    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个,继续递归求这种情况的队伍合法数量。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘