1、未名湖畔的烦恼

2023-10-24 02:10
文章标签 烦恼 未名湖畔

本文主要是介绍1、未名湖畔的烦恼,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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


输入格式 
两个整数m、n


输出格式  
一个整数——队伍排法的方案数


样例
输入3 2,输出5


数据规模和约定  
m,n∈[0,18]

分析题目:因为前一天鞋都被借走了(第二天来还或者随便任何某个想还的时间)…好吧,我分析不出来什么(因为我觉得这并不符合实际情况,实际情况是有人来借就给,没有鞋能给的话就等着来还鞋的,所以为什么要设计那么多种方案呢),我们还是就按照题目的表面意思写程序吧!
程序:想写程序,又没有思路…

#include <iostream>
#include <stdlib.h>
using namespace std;
int fun(int m, int n)
{if (m < n)return 0;if (n == 0)return 1;return fun(m - 1, n) + fun(m, n - 1);
}
int main()
{int returnNum, rentNum;cout << "还鞋人数returnNum(0~18):";cin >> returnNum;cout << "租鞋人数rentNum(0~18):";cin >> rentNum;cout << "方案数:" << fun(returnNum, rentNum) << endl;system("pause");return 0;
}

【碎碎念】
刚开始刷算法题,这是第一道遇见的有难度的题,靠我自己的水平是想不到答案的。我花费了一个半小时在找每个输出之间的规律,比如当m = 5, n = 1,2,3,4,5时各个方案数的联系,事实是这是徒劳的,没有规律可循。即便写出了几个符合的算法,也还是有例外。很明显,我这种思想体现了我的算法水平是如何的低…于是乎我搜索了答案。在看了多个别人的理解后,我有了自己的理解,目前来说,我只是能看懂,能否做到举一反三?
【理解】
1、首先要明确的:根据一个大神的讲解,我知道了该递归算法的排列是倒着来的,也就是说,先看队伍的第五个人是换鞋还是借鞋…原因是若不这样做,我们无法做到让算法在先对第一个人进行排列时保证他是来还鞋的。而先看队伍的第五个人是换鞋还是借鞋,最后再根据判断n是否为0来确保队伍上的第一个人是还鞋的。这样,就保证了第一个人是还鞋的。
2、然后我根据实例进行了验证。有五种方式,如下:
五种排列方式代表五种路径
3、开始分析意义。第⑤条路径最短最好分析!会有很惊奇的发现!从下往上分析,这是肯定的呐。

  • (3,0)表示还有3个要还鞋的人还没排呢。但是不用排了呀。因为算法排出的结果为BBAAA,但实际排队效果为AAABB!所以!到这里你会发现…m - 1表示我这一步把某个还鞋的人安排了,n - 1表示我这一步把某个借鞋的人安排了!(Oh,当然,我比较愚钝,可能你早就发现了…)因此!各个路径从上到下下来的结果分别如下(实际效果与之相反):
    ①ABAB(A)
    ②ABBA(A)
    ③BAAB(A)
    ④BABA(A)
    ⑤BBAA(A)

4、看懂整个算法后,进行总结。

  • 每次走完整个流程,符合n = 0的话,就表示刚才走的路径符合要求,所以返回1,表示这是一种方式。
  • 我不知道一个题要具备怎样的特征就要去想着应该用递归去做;更不知道如果需要写递归的话,这个递归应该是怎样的。
  • 把m、n的减1看做对其进行了安排,也就想爬台阶那个题的减1、减2表示你实际爬台阶的行动。
  • 先不总结了…做的题比较少的原因吧,总结不出来个啥。也许等做多了就会有所感悟…我会再来写的!

这篇关于1、未名湖畔的烦恼的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/272010

相关文章

别为大文件烦恼!mp4文件太大怎么变小?3个管用方法

你是否曾经遇到过mp4视频文件过大的困扰?每当想要分享或存储mp4文件时,巨大的文件就成了阻碍。明明感觉感觉没占用多少空间,但是设备却常常出现空间过满警告。 没多少空间的设备真是让人大为恼火,没人想多花一份钱买设备。那么只能选择把文件变小,节省空间了。mp4文件太大怎么变小?在这篇文章中,我们将分享三种有效的方法,帮助你轻松解决mp4文件过大的问题。 还等什么呢?请屏幕外的读者和我们一起按步骤

uniapp树洞烦恼分享系统 微信小程序设计与实现 80igt

目录 博主介绍技术栈系统设计🌟文末获取源码+数据库🌟具体实现截图后端前端java类核心代码部分展示可行性论证个人心得系统测试操作可行性源码获取详细视频演示 博主介绍 👇🏻 博主介绍:👇🏻 专注于Vue Java、python nodejs php小程序技术领域和毕业项目实战✌全网粉丝50W+,博客专家、CSDN特邀作者、CSDN新星计划导师、全栈领域优质创作者,cs

告别文档处理烦恼,PDF Guru Anki一键搞定所有

前言 知识就像烛光,能照亮一个人,也能照亮无数人,科技之光更是如此;这一理念深刻地影响了我们如何看待和应用新技术。正是在这样的背景下,一款集PDF处理与高效学习工具于一体的软件——PDF Guru Anki应运而生,它不仅代表了技术创新的力量,更是开发者对提升用户工作学习效率的深刻洞察与不懈追求。 开发团队由一群热爱技术、勇于创新的专业人士组成。他们深知在信息化时代,处理PDF文档和学习管理已

分贝通助力云天励飞“甩掉”每月报销烦恼

技术创新和应用落地两手抓,已经是每一家人工智能企业突破瓶颈、快速发展的共同选择。可在组织的日常运营中,如何提升创新效率,保证项目建设又快又好完成,人效是关键。作为国内领先的人工智能企业,云天励飞率先选择从费用支出的角度寻找人效升级突破。 企业介绍 云天励飞成立于2014年8月,是拥有算法、芯片和大数据全栈式能力的人工智能企业。凭借“算法芯片化”的核心能力和“端云协同”的技术路线,云天励飞在智慧

BUUCTF派大星的烦恼

解压得到一张图片没啥有用信息 根据下面题目提示,用010editor打开图片发现一段16进制字符串 派大星最近很苦恼,因为它的屁股上出现了一道疤痕!我们拍下了它屁股一张16位位图,0x22,0x44代表伤疤两种细胞,0xf0则是派大星的赘肉。还原伤疤,知道是谁打的派大星!(答案为32位的一串字符串) 注意:得到的 flag 请包上 flag{} 提交 在010editor直接

HOJ 1876经理的烦恼

http://acm.hit.edu.cn/hoj/problem/view?id=1867 哎~这道题re了很多次。后来找到原因竟然是 #define maxn 1000010+5   的错误,因为这里的C++提交不支持 宏定义有+的运算改为     #define maxn 1000010就过了 解题思路:树状数组C[i]存的是A[i-lowbit[i]+1]~A[i]中的素数的个数。之

ios去水印软件免费版,精选五大高效工具,告别水印烦恼!

随着社交媒体的普及,越来越多的人喜欢在网络上分享自己的生活点滴。在分享视频时,水印往往会影响美观。为了帮助大家解决这个问题,本文为您推荐五大高效免费的iOS去水印软件,让您轻松告别水印烦恼! 软件一:奈斯水印助手(小程序) 推荐指数:☆☆☆☆☆ 奈斯水印助手是一款简单易用的去水印小程序,可以帮助用户快速去除视频中的水印。 特点: 1、操作简便,一键去除水印。 2、支持多种视频格式。

NYOJ 237 游戏高手的烦恼 POJ3041-Asteroids ( 二分图的最大匹配 )

链接: NYOJ 237  游戏高手的烦恼:click here~~ POJ  3041 Asteroids           :click here~~ 题意: 两题一样,翻译不同而已。 有一位传说级游戏高手,在闲暇时间里玩起了一个小游戏,游戏中,一个n*n的方块形区域里有许多敌人,玩家可以使用炸弹炸掉某一行或者某一列的所有敌人。他是种玩什么游戏都想玩得很优秀的人,所以,他决

直面问题,咱谈焦虑、谈烦恼、谈如何成长

前天,看了一场极客时间的直播《直面问题,咱谈焦虑、谈烦恼、谈如何成长》,大名鼎鼎的左耳朵耗子陈皓老师亲自坐镇直播间,主要分享了以下四个问题: 1、技术人员如何面对自己的焦虑烦恼? 2、程序员应该把哪些基础知识学扎实? 3、目前风口上的前沿技术都有哪些? 4、如何提升学习能力?  在学习的过程中,老师讲的内容很高大上,听完以后,更加地焦虑、烦恼,因为成长没有捷径,只有一步一步地付出。其中,

有了它,再也不用为客户管理而烦恼

在竞争激烈的市场环境中,有效的客户关系管理(CRM)系统是企业获取商机、提高成单效率的关键。搭贝CRM管理系统是基于市场业务需求量身定制的,通过记录客户360度画像和跟进信息,实现客户管理的精细化和高效流转。 🎯 客户信息追溯可视化 搭贝CRM系统提供多种看板,直观展示关键信息: 线索流向分配:清晰展示线索来源、分配给哪些个人、部门或公司,帮助团队实时掌握资源分配情况。客户计划:记录和