请教一个关于程序设计上的问题。

2020-04-22 23:53:22 +08:00
 Kylinsun
场景是每天会提供一个菜谱,这个菜谱是由荤、素、汤组合而成,如何保证一周内的菜谱或者一个月内的菜谱都不重复呢?目前想到的做法是把每天组合过的菜谱加入到一个已使用的的表里面,通过查这个表来达到组合不重复的效果,不知道有没有更好的处理的方式。
1583 次点击
所在节点    问与答
10 条回复
BingoXuan
2020-04-22 23:56:20 +08:00
如果菜谱数量不多,直接算笛卡尔积然后分配每一天就好了
Kylinsun
2020-04-23 00:05:50 +08:00
@BingoXuan 荤、素、汤大概都有 300+以后估计还会增加,存库后面也有性能上的问题
fishCatcher
2020-04-23 00:21:06 +08:00
可以仿照 leetcode31 next permutation (中文名叫下一个排列)的思路来写?
RickyHao
2020-04-23 00:24:05 +08:00
这才要求一个月不重复,存库一下不是最简单的么(
nvkou
2020-04-23 01:26:24 +08:00
你就不能每月 1 号先把整个月的组合好?需求可没说每个人的排列都要随机啊
himself65
2020-04-23 01:34:09 +08:00
我觉得大概就是那种搜索引擎的效果,比如输入 “荤、素” 自动查询到已经出现的菜谱,然后就知道未出现的菜谱。
从算法上,建一个有向图就行了,目测 O1 的复杂度,当然空间复杂度会很大
Kylinsun
2020-04-23 08:01:09 +08:00
@RickyHao 目前想到的就是这种做法
Kylinsun
2020-04-23 08:02:34 +08:00
@nvkou 主要是基数会一直在增大,而且后边可能不止荤菜汤这几个类别
gy123
2020-04-23 09:05:48 +08:00
根据主键或名称 md5 拼凑唯一键?一个月或一周?冗余出数据在一个表只存最近的定期删除?
Kylinsun
2020-04-23 10:11:08 +08:00
@gy123 目前想到的也是存表。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/665160

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX