gpt4 book ai didi

c++ - c++ 中的沙漏,hackerrank

转载 作者:行者123 更新时间:2023-11-28 01:40:10 27 4
gpt4 key购买 nike

我试图解决 Hourglass problem在 HackerRank 上的 C++ 中。

任务如下:给定一个 6x6 二维数组,A:

1 1 1 0 0 0 
0 1 0 0 0 0
1 1 1 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0

我们将 A 中的沙漏定义为值的子集,其索引在 A 的图形表示中落入此模式:a b c de f gA 中有 16 个沙漏,沙漏总和是沙漏值的总和。任务计算 A 中每个沙漏的沙漏总和,然后打印最大沙漏总和。

针对这个问题我写了那段代码:

int main(){
vector< vector<int> > arr(6,vector<int>(6));
int max , sum;
for(int arr_i = 0;arr_i < 6;arr_i++){
for(int arr_j = 0;arr_j < 6;arr_j++){
cin >> arr[arr_i][arr_j];
}
}
for(int arr_i = 0; arr_i < 4; arr_i++){
for(int arr_j = 0; arr_j < 4; arr_j++){
sum = arr[arr_i][arr_j] + arr[arr_i][arr_j+1] + arr[arr_i][arr_j+2] + arr[arr_i+1][arr_j+1] + arr[arr_i+2][arr_j] + arr[arr_i+2][arr_j+1] + arr[arr_i+2][arr_j+2];
if(sum > max) {
max = sum;
}
}
}
cout << max << endl;
return 0;
}

如果我不初始化 int max = -63 ,这是沙漏的最小可能总和,最大变量存储正值,例如4198560在里面。这样我的if(max<sum){ ... }当我没有用最小可能值初始化最大值时,条件无法正常工作。

但是,在用最小值初始化 max 之后,它工作正常。你知道这个可能的值(value)来自哪里吗?转储数据是否在内存中?

最佳答案

如果您没有为 max 指定初始值,那么它的值就是当时该内存地址处的任何值。使用单元化内存是未定义的行为,值可以是任何东西。

关于c++ - c++ 中的沙漏,hackerrank,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47542218/

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