V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Kylinsun
V2EX  ›  问与答

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

  •  
  •   Kylinsun · 2020-04-22 23:53:22 +08:00 · 1584 次点击
    这是一个创建于 1711 天前的主题,其中的信息可能已经有所发展或是发生改变。
    场景是每天会提供一个菜谱,这个菜谱是由荤、素、汤组合而成,如何保证一周内的菜谱或者一个月内的菜谱都不重复呢?目前想到的做法是把每天组合过的菜谱加入到一个已使用的的表里面,通过查这个表来达到组合不重复的效果,不知道有没有更好的处理的方式。
    10 条回复    2020-04-23 10:11:08 +08:00
    BingoXuan
        1
    BingoXuan  
       2020-04-22 23:56:20 +08:00   ❤️ 1
    如果菜谱数量不多,直接算笛卡尔积然后分配每一天就好了
    Kylinsun
        2
    Kylinsun  
    OP
       2020-04-23 00:05:50 +08:00
    @BingoXuan 荤、素、汤大概都有 300+以后估计还会增加,存库后面也有性能上的问题
    fishCatcher
        3
    fishCatcher  
       2020-04-23 00:21:06 +08:00 via iPhone   ❤️ 1
    可以仿照 leetcode31 next permutation (中文名叫下一个排列)的思路来写?
    RickyHao
        4
    RickyHao  
       2020-04-23 00:24:05 +08:00 via Android   ❤️ 1
    这才要求一个月不重复,存库一下不是最简单的么(
    nvkou
        5
    nvkou  
       2020-04-23 01:26:24 +08:00 via Android   ❤️ 1
    你就不能每月 1 号先把整个月的组合好?需求可没说每个人的排列都要随机啊
    himself65
        6
    himself65  
       2020-04-23 01:34:09 +08:00 via iPad   ❤️ 1
    我觉得大概就是那种搜索引擎的效果,比如输入 “荤、素” 自动查询到已经出现的菜谱,然后就知道未出现的菜谱。
    从算法上,建一个有向图就行了,目测 O1 的复杂度,当然空间复杂度会很大
    Kylinsun
        7
    Kylinsun  
    OP
       2020-04-23 08:01:09 +08:00 via iPhone
    @RickyHao 目前想到的就是这种做法
    Kylinsun
        8
    Kylinsun  
    OP
       2020-04-23 08:02:34 +08:00 via iPhone
    @nvkou 主要是基数会一直在增大,而且后边可能不止荤菜汤这几个类别
    gy123
        9
    gy123  
       2020-04-23 09:05:48 +08:00 via iPhone   ❤️ 1
    根据主键或名称 md5 拼凑唯一键?一个月或一周?冗余出数据在一个表只存最近的定期删除?
    Kylinsun
        10
    Kylinsun  
    OP
       2020-04-23 10:11:08 +08:00
    @gy123 目前想到的也是存表。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2504 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 02:50 · PVG 10:50 · LAX 18:50 · JFK 21:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.