我正在寻找一种算法,可以根据条件得出最佳组合(最佳==使用尽可能多的单元格,如果可能,请使用所有单元格)。源始终是多维数组,并且仅包含2个不同的元素。目标是使用数组中的所有元素,并且元素只能使用一次。
例如:
输入(多维数组):
AAAAA
ABBBA
AAAAA
第一个项目位置为0,0
条件:
每个组合必须包含至少一个A和至少一个B。
每个组合允许的最大单元数为6。
此示例的解决方案是:
三种不同的组合,它们使用输入中的每个单元格,并且每个组合的最大单元格数不超过6。
AA A AA
AB B BA
AA A AA
第一个组合在行0,2和列0,1之间
第二个组合在行0,2和列2,2之间
第三个组合在行0,2和列3,4之间
一个更现实的例子是
ABBBAAA
BBBBABB
AABAABA
ABBABBB
AAAAAAB
AAAAAAB
条件:
每个组合必须包含至少一个A和至少一个B。
每个组合允许的最大单元数为5。