蓝桥杯之未名湖边的烦恼-递归极简版(c++实现)

上文链接:蓝桥杯之Remember the A La Mode-需要谨慎处理逻辑关系(c++实现)


资源限制

时间限制:1.0s 内存限制:256.0MB

问题描述

每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。
  每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。(两个同样需求的人(比如都是租鞋或都是还鞋)交换位置是同一种排法)

输入格式

两个整数,表示m和n

输出格式

一个整数,表示队伍的排法的方案数。

样例输入

3 2

样例输出

5

数据规模和约定

m,n∈[0,18]
  问题分析

该算法之我的思路

  • 我采用递归解决该题,节省代码量,不足之处是浪费不必要空间,浪费运行时间。所以在递归时要少用变量,少存储。
  • 注意借还鞋过程中count的变化:是++count或者count++,与count初始值有关

算法展示

#include <iostream>
using namespace std;
//模拟借还鞋过程
void calshoes(int m,int n,int *count)
{
	//借还鞋过程结束记录
	if(m==0&&n==0)*count=++(*count);
	//借还鞋结束标志
	if(n<0)return;
	if(m<n)return;
	//要不借,要不还
	calshoes(m-1,n,count);
	calshoes(m,n-1,count);
}

int main()
{
	int m,n;//还鞋数m,租鞋数n 
	cin>>m>>n;
	int count=0;
	calshoes(m,n,&count);
	cout<<count<<endl;
	return 0;
} 

下文链接:蓝桥杯之合根植物-并查集及父子节点规律求解简化(c++实现)

发布了30 篇原创文章 · 获赞 3 · 访问量 2762

猜你喜欢

转载自blog.csdn.net/weixin_44077556/article/details/104262686