0

我喜欢在编程方面自己解决问题......所以我正在考虑一种方法来循环遍历具有动态维度的多维数组。(主要用于蛮力之类的东西)

我想出的遍历未知维度数组的方法如下:

#include <stdio.h>
#include <stdlib.h>

/* a simple example of the method I'm using */
void func(int *v,char *usable,int len,int D,int d)
{
  for(v[d] = 0; v[d] < len; v[d]++)
  {
    if(d+1 < D)
      func(v,len,D,d+1);
    else
    {
      for(int i = 0; i < D; i++)
        printf("%c",usable[v[i]]);
      printf("\r");
    }
  }
}
int main()
{
  int *v,z,min = 4,max = 6;
  for(z = min; z <= max; z++)
  {
    v = malloc(sizeof(int)*z);
    func(v,"0123456789",10,z,0);
    printf("\n");
    free(v);
  }
  return 0;
}

我认为这是一个很好的优雅解决方案,但在考虑多线程处理时我遇到了更多问题。我想知道我尚未发现的此类进程的替代解决方案,以及对此类进程进行多线程处理的可能方法。我尝试的一种方法是创建预先确定的,但是由于当数字或可用字符增加太大时需要处理大量值,它们会溢出任何正常变量。

有人可能会问:“为什么需要创建多线程蛮力。” 我会回答说,创建多线程蛮力的能力意味着多线程其他进程的能力,如迷宫解决和最佳路线确定。

提前谢谢你。

4

1 回答 1

0

我仍然对你试图用你的代码做什么感到困惑。但是根据你的描述。您说您正在尝试开发一种“循环遍历具有动态维度的多维数组的方法”。

对我来说,这句话说你想遍历一个 n 维数组。所以它会循环遍历数组 [n] 或循环遍历数组 [n] [m] 等等,以获取任意数量的维度和长度。这是你想要做的吗?如果是这样,您可以简单地使用模板函数来循环遍历 n 维数组。

于 2012-11-08T03:52:54.137 回答