gpt4 book ai didi

c++ - 黑客等级 Mini-Max Sum

转载 作者:行者123 更新时间:2023-12-01 14:47:24 27 4
gpt4 key购买 nike

this problem
我通常会删除默认代码并开始自己解决整个问题。但是,hackerrank 测试用例显示的输出与我针对自定义输入运行时出现的输出不同。为什么显示不同的数字?
请记住,我尝试了不同的输入大小,如 float、long long int、int 和 double;

#include <bits/stdc++.h>

using namespace std;

int main() {
long long int arr[5], neglect = 0, min = 9999999999999, max = 0, curr = 0;
for (int i = 0; i < 5; i++) {
cin >> arr[i];
}

while (neglect < 5) {
for (int i = 0; i < 5; i++) {
if (i == neglect) {i++;}
curr += arr[i];
}
if (curr < min) {min = curr;}
if (curr > max) {max = curr;}
//cout << curr << endl;
//cout << curr << " " << min << " " << max << endl;
curr = 0;
neglect++;
}
cout << min << " " << max;
}
我想要的只是以一种尝试所有组合然后显示最小值和最大值的方式来解决它。我知道我的代码不是解决它的最佳方法,我知道我可以对数组进行排序并排除第一个和最后一个元素,但请耐心等待。
输入: 1 2 3 4 5声称的输出: 11 4198826但是当我使用相同的自定义输入和它显示的注释行调试它时:
14 14 14
13 13 14
12 12 14
11 11 14
10 10 14
10 14
这不意味着我的代码应该可以工作吗?

最佳答案

当您忽略最后一个元素时,您正在执行 i++这将添加 arr[5]curr值,但是 arr[5]超出数组范围,因此可能会导致段错误或意外结果。
我建议你不要增加 i在 for 循环中,当您想忽略该元素时,您可以使用 continue。

        for (int i = 0; i < 5; i++) {
if (i == neglect) {
continue;
}
curr += arr[i];
}
此外,您可以用 while 循环替换外部 for 循环,这样您就不必手动增加忽略。

关于c++ - 黑客等级 Mini-Max Sum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62853246/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com