以下のような配列があるとします
array[] = {14,10,20,4}
この配列はサブセット {14,10} と {20,4} に分割できます。これら 2 つの合計は等しいからです。
別の例は次のとおりです。
array[] = {5, 5, 15, 5}
この配列はサブセット {5,5,5} と {15} に分割できます。これら 2 つの合計は等しいからです。
しかし
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);
最初のものには機能しません。
このプログラムをどうするか?