我喜欢在编程方面自己解决问题......所以我正在考虑一种方法来循环遍历具有动态维度的多维数组。(主要用于蛮力之类的东西)
我想出的遍历未知维度数组的方法如下:
#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;
}
我认为这是一个很好的优雅解决方案,但在考虑多线程处理时我遇到了更多问题。我想知道我尚未发现的此类进程的替代解决方案,以及对此类进程进行多线程处理的可能方法。我尝试的一种方法是创建预先确定的块,但是由于当数字或可用字符增加太大时需要处理大量值,它们会溢出任何正常变量。
有人可能会问:“为什么需要创建多线程蛮力。” 我会回答说,创建多线程蛮力的能力意味着多线程其他进程的能力,如迷宫解决和最佳路线确定。
提前谢谢你。