gpt4 book ai didi

c# - 来自 2 个点数组的 4 个点的组合

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:44:28 26 4
gpt4 key购买 nike

我有两个二维点数组:

array1 = int[x][2]
array2 = int[y][2]

我想从这两个数组生成 4 个点的组合。结果应该放在一个列表中:

List<int[4][2]>

但我需要为每个组合指定我从 array1 中获取的点数(并从 array2 中获取剩余的点)。点的顺序无关紧要。而且不应该有重复。

例如:

array1={ {0,0} , {0,1} , {1,0} }
array2= { {1,1} , {2,1} , {2,2} , ... , {9,9} }

(从array1取1个点,从array2取3个点)

res= { {0,0} , {1,1} , {2,1} , {2,2} }
{ {0,0} , {1,1} , {2,1} , {3,2} }
...
{ {0,0} , {1,1} , {2,1} , {9,9} }
...
{ {0,1} , {1,1} , {2,1} , {2,2} }
...

从不:

res = { {0,0} , {1,1} , {1,1} , {1,1} }
...

两者都不是:

res= { {0,0} , {1,1} , {2,1} , {2,2} }
{ {0,0} , {1,1} , {2,2} , {2,1} }
...

(从array1取2个点,从array2取2个点)

...

(从array1取3个点,从array2取1个点)

...

我希望有人可以帮助我解决这个问题,因为我花了很多时间阅读/测试许多答案,但找不到解决方案。

PS/Edit:如果您可以提供 C# 代码,那就太好了。

最佳答案

这个问题已经被你的规定简化了,你只能按照它们在原始数组中的存储顺序检索点。

编辑:由于您规定结果应包含组合而不是排列,因此简化了这个问题。因此,为了简化事情,我们可以按照它们在原始数组中的存储顺序检索点,这样可以避免排列它们。

您提议翻译任何其他语言,所以我将使用 JavaScript。请注意,JavaScript 数组包括它们的长度,因此您需要单独传递长度(或者传递数组的末尾)。

function combinations(array1, count1, array2, count2)
{
var result = [];
combine(array1, 0, count1, array2, 0, count2, [], result);
return result;
}

function combine(array1, offset1, count1, array2, offset2, count2, chosen, result)
{
var i;
var temp;
if (count1) {
count1--;
for (i = offset1; i < array1.length - count1; i++) {
temp = chosen.concat([array1[i]]); // this copies the array and appends the item
combine(array1, i + 1, count1, array2, offset2, count2, temp, result);
}
} else if (count2) {
count2--;
for (i = offset2; i < array2.length - count2; i++) {
temp = chosen.concat([array2[i]]);
combine(null, 0, 0, array2, i, count2, temp, result);
}
} else {
result.push(chosen); // don't need to copy here, just accumulate results
}
}

关于c# - 来自 2 个点数组的 4 个点的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13547025/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com