在尝试解决简单的2D阵列沙漏挑战时,我遇到了一个问题: 有人在此Hourglass sum in 2D array
详细介绍了此挑战现在,来到我的代码,我只是尝试解决它如下(我知道我的方法非常低效:))
main()
{
int i, j;
int A[6][6] = { {1, 1, 1, 0, 0, 0 },
{ 0, 1, 0, 0, 0, 0 },
{ 1, 1, 1, 0, 0, 0 },
{ 0, 0, 2, 4, 4, 0 },
{ 0, 0, 0, 2, 0, 0 },
{ 0, 0, 1, 2, 4, 0 }
};
const int const index[] = { 0, 1, 2, 7, 12, 13, 14 };
int res[7] = { 0 }, k = 0, l = 0;
int * ptr = &(A[0][0]);
for (i = 0; i < 21; i++)
{
//ptr = &(A[i][0]);
for (j = 0; j < 7; j++)
{
res[k] += *((ptr + index[j]));
}
if (k >0 && res[k] > res[k - 1])
{
l = res[k];
}
k++;
ptr++;
printf("%X,", ptr);
}
printf("\n%d", l);
}
但是我遇到的奇怪问题是,虽然这段代码达到了(我认为它的A [1,4]),但我的index []数组本身的值正在被修改,以便索引值从0开始 - 6被分配了一些垃圾值!。,最终程序崩溃,因为这个垃圾值被添加到基指针,导致访问冲突。 虽然,我可以理解我的数组操作逻辑的任何可能的问题,我无法理解为什么常量索引数组被破坏。