首页 > 解决方案 > 是否可以在不使用内存空间的情况下创建数组?

问题描述

给定功能:

int sumIndexesOfFour(int array[4][4], int lookFor[4])

给定一个包含 100 个数字的二维数组和一个包含 4 个数字的二维数组,该函数在第一个数组中查找这些数字并将它们的索引相加。我想创建一个新功能:

void sumAllFours(int array[4][4], int sum[16], int output[4])

该函数将数组总和分成 4 组,每组 4 个数字(0 到 3、4 到 7、8 到 11、12 到 15),在第一个数组中查找每个组的索引,并将它们相加,然后将结果放入输出数组(根据集合的顺序)。

我正在尝试在不使用内存中的任何额外空间的情况下构建 sumAllFours 函数(这意味着我无法创建新的二维数组或指针或任何东西),但我也想使用需要二维数组的函数 sumIndexesOfFour一个输入。到目前为止,这是我的代码:

void sumAllFours(int array[4][4], int sum[16], int output[4])
{
    int setNum=0, firstNum = sum[0], secondNum= sum[1], thirdNum= sum[2], fourthNum= sum[3];

    for(int i=0; i<4, i= i+4)
    {
        firstNum= sum[i];
        secondNum= sum[i+1];
        thirdNum= sum[i+2]
        fourthNum= sum[i+3];
        output[setNum]= sumIndexesOfFour(array, **{firstNum, secondNum, thirdNum, fourthNum}**   );
        setNum++
    }

}

** ** 之间的部分是我试图弄清楚该怎么做,我想给 sumIndexesOfFour 一个由四个数字组成的数组来求和它们的索引,但我无法创建一个新数组,所以我认为可能有一些程序在不实际定义数组的情况下将某种行或命令转换为数组的方法。

可能吗?如果是这样,我应该将 ** ** 中的命令更改为什么?

(我附上了一个例子的图片 - 可能有一些错误的计算,因为我在脑海中做了计算,但重点很清楚^-^)

在此处输入图像描述

标签: arraysfunctionspace-complexity

解决方案


推荐阅读