gpt4 book ai didi

c# - 如何检查数组中的所有概率

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

例如我们有一个整数数组

private int[] arr = new[] {10,5,5,6,4,5,7,3,8,2 };

我们有一把 key

private key =1;

该目标被罚款满足以下规则的所有可能性:

key+[索引列表] = 11;

例如输出应该是这样的:

 [0] - [1],[2] - [1],[5] - [2],[5] - [1],[7],[9] - [8],[9]

更清楚地说,我们想以适当的方式对所有索引组合进行罚款;

 key+arr[0]=11;
key+arr[1]+arr[2] =11;
key+arr[1]+arr[5]=11;
key+arr[1]+arr[7]+arr[9]=11;

首先我尝试了 LinQ 方式,但没有机会!其次,我尝试用*算法来处理这个问题,但我没有运气。然后我尝试通过递归调用来执行此操作,但再次没有正确的结果。

我知道这并不复杂,我希望自己能在 15 分钟内完成。但我真的被困在这里了。

感谢任何帮助。

最佳答案

你 friend 的递归,这里有一个例子可以把你推向正确的方向。加入胡椒粉和盐调味

public static IEnumerable<string> GetCombinations(int[] set, int sum, string values)
{
for (int i = 0; i < set.Length; i++)
{
int left = sum - set[i];
string vals = set[i] + "," + values;
if (left == 0)
{
yield return vals;
}
else
{
int[] possible = set.Take(i).Where(n => n <= sum).ToArray();
if (possible.Length > 0)
{
foreach (string s in GetCombinations(possible, left, vals))
{
yield return s;
}
}
}
}
}

用法

private int[] arr = new[] {10,5,5,6,4,5,7,3,8,2 };

foreach (string s in GetCombinations(arr, 18, ""))
{
Console.WriteLine(s);
}

关于c# - 如何检查数组中的所有概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48683913/

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