假设我有一个数组如下
array[] = {14,10,20,4}
该数组可以分为子集 {14,10} 和 {20,4},因为这两个具有相等的和。
另一个例子可能是
array[] = {5, 5, 15, 5}
该数组可以分为子集 {5,5,5} 和 {15},因为这两个具有相等的和。
但
array[] = {1, 5, 30}
不能分成相等的集合,因为它们永远不可能相等。
我们怎么能这样做?
我的镜头
var result = string.Empty;
int highestNumber = input1[0];
int sum = 0;
string set = string.Empty;
foreach (int value in input1)
if (value > highestNumber) highestNumber = value;
for (int i = 0; i < input1.Length; i++)
{
var elements = input1[i];
if (elements > 0)
{
if (elements != highestNumber)
{
sum += elements;
set += "," + elements;
}
}
}
if (sum == highestNumber)
result = "Yes it can be partitioned"
else
result = "No it cannot be";
Console.WriteLine(result);
它不适用于第一个。
这个程序怎么做?