namespace CombinationWork
{
class Program
{
static void Main(string[] args)
{
List<int> List = new List<int>(new int[] {1,2,5,10});
for (int noSelected=0;noSelected<4;noSelected++)
{
for(int noAdded=0;noAdded<4;noAdded++)
{
List.Add(List[noSelected]+List[noAdded]);
}
}
List = List.Distinct().ToList();
for (int display = 0; display < List.Count; display++)
{
Console.WriteLine( List[display]);
}
Console.ReadLine();
}
}
}
需要帮助的人。 假设我有一个数组: int [] a = {1,2,5,10}; 我想互相添加所有元素。例如:
2
2 + 1 = 3
我得到了一些不准确的值。错误在于使用嵌套的for循环,但我不知道还有什么可以使用
答案 0 :(得分:0)
对于n个数字,它应该给你2个pow n组合。使用数字的二进制表示来发布所有组合。
实施例, 二进制 - 001十进制 - 1 二进制 - 010十进制 - 2 二进制 - 011十进制 - 3 ... 二进制 - 001十进制 - 1
从上面的真值表中,只有当各个二进制数字为1时才包含一个求和的数字
示例,列表中的数字[1,2,3];解释如下, 对于二进制 - 001,你应该得到3 对于二进制 - 010,你应该得到2 对于二进制 - 011,你应该得到2 + 3 = 6