【发布时间】:2019-01-24 14:40:20
【问题描述】:
我遇到了一个特殊的问题,经过长时间的搜索,我找不到任何解决方案。 这是我的问题:
我有两个字符串数组:
var arr1 = new[] { "UserId", "BookId", "BookStoreId", "Appid" };
var arr2 = new[] {"Same", "Unique", "Repetitive"};
我想要所有可能组合的结果,例如:
结果(应为表格格式):
Columns- UserId BookId BookStoreId Appid
- Row1 相同 相同 相同 相同
- Row2 相同 相同 相同 唯一
Row3 相同相同相同重复
Row4 相同 相同 唯一 相同
Row5 相同 相同 重复 相同
Row6 相同 相同 唯一 唯一
- Row6 相同相同唯一重复
- Row7 相同相同重复唯一
Row8 相同相同重复重复
Row9 相同 唯一 相同 相同
- Row10 相同唯一唯一相同
- Row11 相同 重复 相同 相同 等等……
行和列仅用于表示目的。
我希望我的问题现在很清楚了。
我应该创造 64 个独特的组合。
我尝试了很多方法,包括笛卡尔积,但都没有解决我的问题。
【问题讨论】:
-
this post 怎么样?
-
所以您想要
arr2中所有长度为 4 的项目的所有可能组合?见permutation with repetions。 -
@MongZhu 这没有给出预期的输出,我希望结果为表格格式,其中 ColumnNames 作为 arr1 值,Rows 作为 Arr2 值。
-
“我应该创造 64 个独特的组合。”我不明白为什么它只会是 64。每个元素都可以是 7 个字符串中的任何一个,对吧?所以应该有 7^4=2401 个组合。您的问题目前还不是很清楚...(为什么您的第一个示例使用
arr1中的所有内容也不是很明显,但您的所有其他示例只使用arr2中的项目。这有什么相关性?) -
那么实际上第一个数组与提出组合无关?还是仅仅提供了您需要的组合的长度? (如果是这样,即使显示字符串数组也不要费心-您基本上想要一个方法接受选项字符串数组,以及每行的项目数。)
标签: c# arrays string combinations permutation