欢迎光临散文网 会员登陆 & 注册

弱智记录.1

2021-02-27 21:39 作者:スレーブ_スレイヤー  | 我要投稿

有的时候不和别人比一下,永远都不知道自己能弱智到什么程度。

问题是:我是一个公司的员工,我有N天的带薪休假,我想要在未来的M天里休尽量长的假,M天中,哪天上班哪天放假是已知的。用程序算出这个最优的方案。

第一眼看到这个问题,居然有百分之50的错误率,想着自己十分钟就能搞定。然而……

当时的思路是爆破,先提取出所有连续工作的天数,作为一个“段”存在一个集合里。如果工作的天数大于N,这一段时间不能用来休假,移出集合。

剩下要做的,就是把假期拆开,塞进集合里的那些段里,枚举出一个最长假期的方案。

然而这个想法从一开始就错了,就算某一段的时间大于N,这一段的某一部分还是可能被用作休假。

这个问题难就难在,需要把假期分成多段来塞到工作日里……段的数量是未知的。可能性太多,总想着设计一个可以适应所有情况的方案,最后写到快脑溢血也没完成。

这应该和算法,数学无关,单纯就是考验逻辑思维,考验一个人解决问题的能力。

不过这个问题也给了我一个启发:

不要试图对具体的情况作出处理。

我一开始想,这还不简单:

直接把带薪休假跟在最长的普通假期后面。

但情况很多,比如给三天假期,然后未来五天里,工作和放假各一天穿插。

这种情况很轻易的击败了我那个逻辑。

然后我改变了想法:

用带薪休假连接两个普通假期,取最长的那个。

然而这个逻辑也有漏洞,因为有可能存在三个普通假期连在一起,比两个最长的长的情况。

思考所有的情况是很难做到的,总会在想不到的地方有一些漏洞……

也就是说,我需要尽量用抽象的思维来思考这个问题。虽然现在还是懵逼状态,但我相信明天一定能得到正确答案。




弱智记录.1的评论 (共 条)

分享到微博请遵守国家法律