同一组输入数据的不同输出,但顺序不同

Different output for the same set of input data, but in different order

为什么我在执行这段代码时会得到不同的输出:

int n;
int b[99];
int money = 0;

int min()
{
    int min = b[0];
    int index = 0;
    for (int i = 1; i < n; i++)
        if (b[i] < min && b[i] % 2 != 0) {
            min = b[i];
            index = i;
        }
    for (int i = index; i < n - 1; i++)
    {
        b[i] = b[i + 1];
    }
    b[n - 1] = 0;
    return min;
}

int main()
{
    money = 0;
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> b[i];
        money += b[i];
    }
    while (money % 2 != 0)
    {
        money -= min();
    }
    if (money % 2 == 0)
        if (money != 0)
            cout << money;
        else cout << "NIESTETY";


        system("pause");
}

输入=2 4 3 3 3; output = 10 //不正确

输入=4 2 3 3 3;输出 = 12 //正确

是什么原因造成的?我想可能是 min() 函数,但我不确定

更多的解释会有所帮助。您想要实现什么(尤其是使用 odd/even 逻辑?您希望第一个 运行 return 是什么?

无论如何,对于第一个 运行,min() 首先 returns 2 然后是 3。从总金额 (15) 中减去两者得到 10。

我打赌 min 函数应该只 return 最小的奇数,但是当数组中的第一个数字是最小的时,它会被 return 编辑,即使它是甚至。但正如我所说,如果没有有意义的函数名称或更多解释,很难看出这段代码的目标。我希望这会有所帮助:)