黑客级别的Mini-Max Sum
hacker rank Mini-Max Sum
这个问题
我通常会删除默认代码,然后自己开始解决整个问题。然而,hackerlink测试用例显示的输出与每当我针对自定义输入运行时出现的输出不同。为什么它显示不同的数字?
请记住,我尝试过不同的输入大小,如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]
超出了数组的范围,因此可能会产生segfault或意外结果。
我建议您不要在for循环中增加i
,相反,当您想忽略元素时,可以使用continue。
for (int i = 0; i < 5; i++) {
if (i == neglect) {
continue;
}
curr += arr[i];
}
此外,您可以将外部for循环替换为while循环,这样就不必手动增加忽略。
相关文章:
- <streamsize>C++ 中 numeric_limits::max() 的值
- 黑客级别的Mini-Max Sum
- 'max'匹配'std::function<const int &(const int &, const int &)>'无过载
- 关于 std::min, std::max 中的比较运算符的混淆
- 如何使我的 sizeof sum 结构与空参数包一起工作
- glibcxx STL 在实现 std::valarray::sum() 时是否不正确?
- 找到一种有效的方法,在 2 个巨大的缓冲区上执行 MAX,每字节字节
- std::max() 函数与定点实现的比较中的问题
- 使用 CImg 库的 std::min 和 std::max 的编译问题
- 在 3ds Max 中更新进度条后,环境和效果 UI 不刷新
- 从自定义类获取对象向量中的 max 元素
- 如何在C++中递归地找到max元素的索引?
- SFINAE 与 numeric_limits<T>::max() 在 MSVC2017 上
- 这句话是什么意思 - " vector<long long> distance(n, std::numeric_limits<long long>::max()); "?
- 在f2c.h文件中定义min()max()宏时出错
- c++curl返回413请求实体过大,但是post大小远小于max大小
- 'std::slice_array<int>'中没有命名'sum'的成员
- 在枚举类型上使用std::max是不是一种糟糕的做法
- 为什么Visual Studio 2019不支持用于减少Openmp的关键字"max"?
- 如何查找具有一组整数的函数的'max absolute sum'