c++ - INT_MIN 的用途
问题描述
我在hackerrank中解决了一个二维数组的问题,这是一个沙漏程序,我们必须找到每个沙漏的总和,然后打印最大沙漏总和。代码如下
int hourglassSum(vector<vector<int>> arr) {
int result= 0;
for(int r=0;r<=3;r++)
{
for(int c=0;c<=3;c++)
{
int sum=arr[r][c]+arr[r][c+1]+arr[r][c+2]+arr[r+1][c+1]+arr[r+2][c]+arr[r+2][c+1]+arr[r+2][c+2];
if(sum>result)
{
result=sum;
}
}
}
return result;
}
int main()
{
vector<vector<int>> arr(6);
for (int i = 0; i < 6; i++) {
arr[i].resize(6);
for (int j = 0; j < 6; j++) {
cin >> arr[i][j];
}
}
int result = hourglassSum(arr);
return 0;
}
现在当我取结果 = 0 时,它在某些测试用例中不起作用。但是一旦我替换结果 = INT_MIN,程序就可以正常工作。由于 INT_MIN 只是分配数据类型可以容纳的最小值,那么为什么我的程序在 result=0 时不起作用?
解决方案
和int result= 0;
如果全部sum
为负,则最终结果将错误地为 0。 if(sum>result) result=sum;
从不为真,因此0
使用默认值 - 这不是最大值sum
。
和int result = INT_MIN;
超过当前最小值的任何sum
值,即使都是负数,result
也会通过 更新if(sum>result) result=sum;
。
推荐阅读
- couchbase - 我正在使用 couchbase 服务器并且我正在使用连接但是我想将 DATE_RANGE_STR() 函数附加到特定的文档类型
- svg - 如何使带有居中文本的SVG黑条响应?
- javascript - 检测元素何时位于屏幕顶部
- bootstrap-4 - 在物化或引导框架中宽度 html 按钮的最佳方法是什么?
- react-admin - react-admin 如何创建客户端列表控制器
- sql-server - SSMS 查询 - 插入数据时提示?
- java - 字符串数组大小和用于访问元素的 for 循环
- amazon-web-services - 以编程方式创建 AWS Cognito?
- javascript - React中花括号内的花括号
- javascript - JS 动画表单