同一组输入数据的不同输出,但顺序不同
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 编辑,即使它是甚至。但正如我所说,如果没有有意义的函数名称或更多解释,很难看出这段代码的目标。我希望这会有所帮助:)
为什么我在执行这段代码时会得到不同的输出:
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 编辑,即使它是甚至。但正如我所说,如果没有有意义的函数名称或更多解释,很难看出这段代码的目标。我希望这会有所帮助:)