多线程强力和递归多维循环。其他方式?

时间:2012-11-08 02:24:12

标签: c++ c multithreading recursion brute-force

我喜欢在编程方面自己解决问题......所以我想到了一种循环使用动态维度的多维数组的方法。 (主要用于蛮力)

我想出的循环未知维度数组的方法如下:

#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;
}

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

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

先谢谢你。

1 个答案:

答案 0 :(得分:0)

我仍然对你尝试使用你的代码感到困惑。但是从你的描述来看。你说你正在尝试开发一种“使用动态尺寸循环多维数组的方法。”

对我来说,这句话说你要循环遍历一个n维数组。所以它会遍历数组[n]或循环遍历数组[n] [m],依此类推任意数量的维度和长度。这是你正在尝试的东西吗?如果是这样,你可以简单地使用模板化函数来遍历n维数组。