C# 以所有可能的方式从数字中减去列表,以便结果数字大于 0

本文关键字:数字 列表 结果 大于 有可能 方式 | 更新日期: 2023-09-27 17:56:53

我需要从数字中减去列表,因此结果将等于或大于 0,结果尽可能小。我还需要查看减去了列表中的哪些项目。

int a = 10;
List<int> list = new List<int>();

我试过这个(可能真的很坏):

for (int c = 0; c < list.Count; c++)
{
    if (a > 0)
    {
        a = a - list.ElementAt(c);
        if (a < 0)
        {
            a = a + list.ElementAt(c);
        }
        else
        {
            Console.Write("{0}", list.ElementAt(c));
        }
    }
}

但问题是它只以一种方式减法,并没有找到最佳选择。

感谢您的任何想法。

C# 以所有可能的方式从数字中减去列表,以便结果数字大于 0

我相信 OP 正在寻找减法后找到最小的可能结果,但该结果必须大于或等于零。

例如,如果{13, 12, 11, 9}和给定的数字正在10则每个列表项的减法后的结果应分别{3,2,1,-1},在这种情况下,最终结果应1,因为它是最小值,但大于或等于零。

在这种情况下,代码可能如下所示:

int a = 10;
List<int> list = new List<int> {13, 12, 11, 9};

int min = -1;
for (int c = 0; c < list.Count; c++)
{
    int tempResult = list[c] - a;
    if (tempResult >= 0)
    {
        min = tempResult;
    }
}
Console.WriteLine(min);