【问题标题】:Find all subsets with given average查找具有给定平均值的所有子集
【发布时间】:2017-06-14 19:07:17
【问题描述】:

给定一组数字:{1, 4, 5, 3, 2} 和​​平均值 = 2.5,找到平均值为 2.5 的所有子集。例如这里的答案是 {1,4},{1,4,3,2},{3,2}

我想在 C# 中解决这个接近多项式时间的问题

【问题讨论】:

  • 这似乎是家庭作业。到目前为止,您尝试了哪些方法?您可能会考虑提及您所做的事情(以及为什么它不起作用),然后人们可能会更倾向于帮助填补这一过程中的空白。
  • 提示:与子集和问题有关。
  • 不是作业,它是个人项目的一部分。以下是我尝试过的代码。

标签: c# subset-sum


【解决方案1】:

不是任务,而是个人项目的一部分。以下是我尝试过的代码。

这里 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);
                }


        }

【讨论】:

    猜你喜欢
    • 2020-03-30
    • 2017-06-12
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多