gpt4 book ai didi

c# - 从动态数字数组中找到唯一的整数和

转载 作者:可可西里 更新时间:2023-11-01 10:35:23 25 4
gpt4 key购买 nike

我面临一个非常困难的情况,假设我有一组动态数字。条件是数组可能包含 10 到 20 个数字。它可以包含 10、12、14、... 到 20 个整数。现在基于 ArrayList.Count(),我将从该数组中选择 3(如果数组包含 10 个整数)到 6(如果数组包含 20 个整数)个数字,并将这些数字相加。说那个数字是“X”。

现在我必须检查列表中是否存在任何三个总和等于 X 的整数,如果相等,则我必须再次重复相同的过程,直到从列表中找到唯一的总和。

那我该怎么做呢?最好的部分是数组中的所有数字都是唯一的,数组中的数字没有重复。

First Idea

我有一个想法,对于 3 个数字,假设我生成一个唯一的数字。

foreach (var i in List) // values of i = 1, 5, 8 (Assume)
{
sum += listOfUniqueIntegers[i];
}

//固定第一个元素为List[i]

for (int i = 0; i < List.Count()-2; i++)
{
// Fix the second element as List[j]
for (int j = i+1; j < List.Count()-1; j++)
{
// Now look for the third number
for (int k = j+1; k < List.Count(); k++)
{
if (List[i] + List[j] + List[k] == sum)
{
// Here I will again create one more unique value
// and assign it to sum and repeat i = 0, j = 0, k = 0;

}
}
}
}

但是这种方法的问题是它的时间复杂度为 n^3,所以如果我必须在列表大小为 20 时从 6 个数字生成一个总和,它将是 n^6,这不是预期的。

Second idea

虽然我可以对列表进行排序,但是我应该使用什么逻辑来选择 3 个整数,以便它的总和在列表中是唯一的。

假设我对列表进行排序并选择三个最小的数字或从排序列表中选择第 3 个 3+1=4 个和 3+2=第 5 个元素,并且 sum=List[3]+List[4] +列表[5];这也不是预期的,不建议选择三个数字的任何模式。它应该是随机选择的,并且总和应该是唯一的。

所以我没有任何想法为此生成最佳解决方案。

谁能帮帮我

最佳答案

只使用 3 个最大的数字。

关于c# - 从动态数字数组中找到唯一的整数和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30512056/

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