我喜欢用编程来解决问题.所以我想出一种方法来循环多维数组的动态维数。(主要用于暴力之类的东西)
我提出的遍历未知维度数组的方法如下:
#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;
}
我认为这是一个不错的优雅解决方案,但在考虑多线程过程时,我提出了更多的问题。我想知道这类进程的替代解决方案,以及多线程的可能方法--类似这样的进程。我尝试过的一种方法是创建预先确定的块,但由于在数字或可用字符增加过大时需要处理大量的值,因此它们会溢出任何正常变量。
有人可能会问:“为什么你需要创建一个多线程的蛮力。”我想回答的是,创建多线程蛮力的能力意味着多线程其他进程的能力,如迷宫解决和最佳路线确定。
谢谢你的进阶。
发布于 2012-11-08 03:52:54
我仍然不明白你想用你的代码做什么。但根据你的描述。你说过你试图开发一种“循环使用动态维度的多维数组的方法”。
对我来说,这句话说你想要遍历一个n维数组。因此,对于任意数量的尺寸和长度,它都会循环通过arrayn或循环过arrayn等等。这就是你想做的吗?如果是这样的话,您可以简单地使用模板函数循环遍历n维数组。
https://stackoverflow.com/questions/13281539
复制相似问题