gpt4 book ai didi

arrays - 如何遍历 n 个维度?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:35:53 27 4
gpt4 key购买 nike

在给定维数和每个变量的大小的情况下,如何迭代 n 维数组?

int n;
int size[n];

由于维数不固定,我不能为每个维写一个嵌套循环。我需要代码来处理每个维度。

此外,无论实际数据存储在 n 维数组还是包含大行中所有数据的平面数组中,都没有关系。两者都可以接受。

int data[16][42][14];   // n-dimensional array
int data[16 * 42 * 14]; // flat array containing the same data

最佳答案

您可以使用递归,为每个维度“猜测”其索引并递归调用一个较小的问题,类似于(伪代码):

iterate(d,n,size,res):
if (d >= n): //stop clause
print res
return
for each i from 0 to size[d]:
res.append(i) //append the "guess" for this dimension
iterate(d+1,n,size,res)
res.removeLast //clean up environment before next iteration

哪里:

  • d为当前访问的维度
  • size,n为输入
  • res 是表示当前部分结果的向量

调用 iterate(0,n,size,res),其中 res 被初始化为一个空列表。


C++ 代码应该是这样的:

void iterate(int d,int n,int size[], int res[]) {
if (d >= n) { //stop clause
print(res,n);
return;
}
for (int i = 0; i < size[d]; i++) {
res[d] = i;
iterate(d+1,n,size,res);
}
}

完整代码和简单示例可在 ideone 上获得

关于arrays - 如何遍历 n 个维度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14040260/

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