gpt4 book ai didi

c++ - INT_MIN 的用途

转载 作者:行者123 更新时间:2023-12-04 13:37:34 26 4
gpt4 key购买 nike

我正在解决一个关于二维数组的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;
}

现在当我取 result=0 时,它在某些测试用例中不起作用。但是一旦我替换了 result= 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; 更新.

关于c++ - INT_MIN 的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60834657/

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