蓝桥杯算法训练—未名湖边的烦恼


  这一题很明显是一个递归,我们先分析一下:
  1.若租的冰鞋数量大于还的冰鞋数量,则无法分配方案会出现无冰鞋可租的现象。
  2.若没有租冰鞋的,只有还冰鞋的,则只有一种方案。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)。
  3.若租的冰鞋数量小于等于还的冰鞋数量,则可以采取两种方案,先还冰鞋和先租冰鞋。若先还一双冰鞋,下一次又可以分为先还冰鞋和先租冰鞋两种情况,如此就可以看出递归的核心了:fun(x-1,y)+fun(x,y-1)。
  代码如下:

#include<iostream>
using namespace std;
int fun(int x,int y){
	if(x<y) return 0;
	if(0==y) return 1;
    return fun(x-1,y)+fun(x,y-1);
}
int main(){
	int m,n;
	cin>>m>>n;
	int sum=fun(m,n);
	cout<<sum;
}

猜你喜欢

转载自blog.csdn.net/brilliantZC/article/details/86620700