gpt4 book ai didi

C++ 分割和比较二维动态数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:51:14 26 4
gpt4 key购买 nike

我正在解决一个类的问题,该类要求我们使用二维动态数组来获取整数作为每个数组“ block ”的每个条目并保存它。它必须能够接受任何大小的数组,所有这些都是在程序运行时从用户那里输入的。然后,数组中的条目将按数组中的每个 3x3 部分排序,并返回最大“部分”的总和。

我在分配内存和分配整数方面没有遇到问题,我还设置了程序完成时删除并返回所有动态内存,但我不知道如何访问每 3x3数组的一部分。我只能访问第一个加在一起,而不使用循环。我很确定我需要一个循环来获取所有数据。

我将如何访问、求和和比较数组的每个 3x3 部分?

这是我目前所拥有的一部分;

  int sumGrid = 0;

// this will get the 1st 3x3's sum correct
sumGrid = (grid[i][j] + grid[i+1][j] + grid[i+2][j] + grid[i][j+1]
+ grid[i+1][j+1] + grid[i+2][j+1] + grid[i][j+2]
+ grid[i+1][j+2] + grid[i+2][j+2]);

// this part isn't right though
for (i = 0; i < height; i++)
{
for(j = 0; j < width; j++)
{
if(((i+1)<height)&&((i+2)<height)&&((j+1)<width)&&((j+2)<width))
{
int tempGrid = 0;
tempGrid = (grid[i][j] + grid[i+1][j] + grid[i+2][j] + grid[i][j+1]
+ grid[i+1][j+1] + grid[i+2][j+1] + grid[i][j+2]
+ grid[i+1][j+2] + grid[i+2][j+2]);
if(tempGrid < sumGrid)
sumGrid = tempGrid;
}
else break;
}
}
biggestGrid = sumGrid;

任何帮助或指出正确的方向将不胜感激!谢谢!

最佳答案

在循环内,您访问元素 i+1 和 i+2 以及 j+1 和 j+2。然而,朝向阵列的边缘,它会越界。

要解决这个问题,您需要数组停止在 height-2 和 width-2 而不是高度和宽度。

关于C++ 分割和比较二维动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28438570/

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