0
給定一組數字:{1,4,5,3,2}和平均值= 2.5,查找平均值爲2.5的所有子集。例如,這裏的答案將是{1,4},{1,4,3,2},{3,2}查找給定平均值的所有子集
我想解決這個接近多項式時間在C#
給定一組數字:{1,4,5,3,2}和平均值= 2.5,查找平均值爲2.5的所有子集。例如,這裏的答案將是{1,4},{1,4,3,2},{3,2}查找給定平均值的所有子集
我想解決這個接近多項式時間在C#
不是賦值,它的個人項目的一部分。以下是我試過的代碼。
這裏a =平均值,w = {1,2,3,4,5},m =目標平均值。
public void SumOfSubset(double a, int k)
{
if (k > 4) return;
x[k] = 1;
var count = x.Where(i => i == 1).Count();
if (((a * (count - 1)) + w[k])/count == m)
{
for (int i = 0; i <= k; i++)
{
if (x[i] == 1)
{
Console.Write(w[i] + ",");
}
}
Console.WriteLine();
}
if (((a * (count - 1)) + w[k] + w[k + 1])/(count + 1) <= m)
{
SumOfSubset(((a * (count - 1)) + w[k])/count, k + 1);
}
if (((a * (count - 1)) + w[k + 1])/count <= m)
{
x[k] = 0;
SumOfSubset(a, k + 1);
}
}
這似乎是功課。你到目前爲止嘗試過哪些方法?你可能會考慮提及你所做的事情(以及爲什麼它不起作用),然後人們可能更傾向於幫助填補這方面的空白。 –
提示:與* subset sum *問題有關。 –
不是任務,它是個人項目的一部分。以下是我試過的代碼。 –