当前位置: 首页 > 知识库问答 >
问题:

组合的分组算法

鲁德佑
2023-03-14

假设我有一个项目列表,每个项目都由一个简单的结构定义

struct simpleItem
{
    String Category1;
    String Category2;
    ...
    String CategoryN;
}
struct grouped
{
    String[] Category1;
    String[] Category2;
    ...
    String[] CategoryN;
}

毛皮类的选择:长的,短的,卷曲的

如果列表中包含了这3个类别的所有排列,那么最终结果将是

第一组:
动物      [猫狗鼠马]
眼睛颜色[蓝黄绿红橙]
皮毛          [长短卷曲]

    null

让我们将此列表称为输入(A)

将这些项目分组后,我们可以得到:(可能有其他可能性)。分组标准将是拥有尽可能少的输出组。

第一组:
动物      [猫,     狗]
眼睛颜色[蓝 ;         ]
皮毛 ;         [长,短]

所以,我正在尝试编写一个生成这些组的算法。我正在尝试使用LINQ来实现这一点,但我也对其他建议持开放态度。对如何从(A)到达(B)有何建议?

共有1个答案

杜砚
2023-03-14
  • 将每个输入作为自己的组来处理。
    • 因此,例如,Cat、Blue、Long成为[Cat]、[Blue]、[Long]的组,每个类别只有一个项目。
    • 合并组的标准是如果n-1个类别的值集相同,并且恰好有一个类别集不匹配。如果是这种情况,则创建一个新的组,其中n-1个相似类别是相同的,剩余的类别是集合的交集。

    通过你的例子。首先,它将第一组和第二组配对。前两个类别集相同,第三个不同,因此可以合并。您现在有一个列表,它是:

      null
      null
      null
    1. [猫,狗],[蓝],[长,短]
    2. [狗],[绿],[长]
    3. [鼠],[红,蓝],[短]

    最后,我们将遍历所有的组合,没有一个组将匹配合并条件,我们就完成了。

 类似资料:
  • 字段1,为true 字段2,真 字段3,false 字段4,false 字段5,false 结果是: {Field1,Field2,Field3,Field4,Field5} {Field1,Field2,,Field4,Field5} {Field1,Field2,,,Field5} {Field1,Field2,,,} {Field1,Field2,Field3,,Field5} {Field

  • 问题是关于从16:43到23:34的视频中的合并排序http://youtu.be/M814OagXWTI?t=16m43s 在退出左/右排序合并递归后,我不清楚我们是如何合并回这些子数组的。让我们从最底部开始,当我们的元素被分成两个子数组时,一个左子数组称为B,一个右子数组称为C。在16:43左右,我们跳转到合并函数,对数组B和C进行排序,这两个数组只有8和3。合并排序函数(下面的代码)基本上通

  • 我正在编写一个程序,根据学生和导师的可用性来组建辅导小组。可用性是用字母表示的阻塞时间列表给出的。例如,如果一个学生以[A, C, D]的形式给出他的可用性,那么他在一天的第一、第三和第四个小时都有空。你如何制作一个函数,它接受学生列表和导师列表,并给出一组列表,从而最大限度地增加一组中的学生数量?我在Java工作,但我对算法比对代码本身更感兴趣。更多细节: 小组必须包含3-6名学生和1名导师。

  • 按组合并返回结果 1,比如菜单服务,接口一样,但有多种实现,用group区分,现在消费方需从每种group中调用一次返回结果,合并结果返回,这样就可以实现聚合菜单项。 相关代码可以参考 dubbo 项目中的示例 配置 搜索所有分组 <dubbo:reference interface="com.xxx.MenuService" group="*" merger="true" /> 合并指定分组

  • 问题内容: 我有ID为的商品。现在我有如下数据。每行都有一个offerId。由数组中的组合组成。是那个的价值 现在,我必须选择所有给我提供最佳ID组合(即最大总折扣)的offerId。 例如,在上述情况下:可能的结果可能是: [o2,o4,o5]最大折扣为。 注意。结果offerId应该不会重复ID。id的示例为[1,3,4],[5],[6]都是不同的。 其他组合可以是: 其id为[1],[3,5

  • 本文向大家介绍vue slots 组件的组合/分发实例,包括了vue slots 组件的组合/分发实例的使用技巧和注意事项,需要的朋友参考一下 使用slots 分发内容 使用组件时常常会有组件组合使用的情况,如下: 直接套用组件的话,父级组件会将子级组件覆盖掉,不能实现需求的效果,为了实现该效果就需要使用 slots来内容分发 slots的使用方法如下: <app></app>标签没有引入其他组件