【发布时间】:2015-05-13 21:53:23
【问题描述】:
好的,我正在编写离散平铺问题的代码。我正在存储名为polyomino 的对象,如下所示:
pointer = new int*[h];
p_0 = new int*[h];
p_1 = new int*[h];
p_2 = new int*[w];
p_3 = new int*[w];
p_4 = new int*[w];
p_5 = new int*[h];
p_6 = new int*[w];
for (i=0 ; i < h ; i++)
pointer[i] = new int[w];
p_0[i] = new int[w];
p_1[i] = new int[w];
p_5[i]=new int[w];
}
for(i=0 ; i < w ; i++){
p_2[i]=new int[h];
p_3[i]=new int[h];
p_4[i]=new int[h];
p_6[i]=new int[h];
}
for (i=0; i<h ; i++){
for(j=0; j<w ; j++){
cout << "What is the " << i+1;
cout << ", " << j+1;
cout << endl;
cin >> k;
if(k != 0)
pointer[i][j]=1;
else
pointer[i][j]=0;
}
}
然后我生成所有 8 个可能的方向(正方形的group of symmetries)并将它们存储到其他 7 个双指针中。我想知道是否有一种方法可以制作大小为 8 的数组来保存每个双指针的地址。
如果我能做到这一点,那么在检查要平铺的木板是否有空位然后放置它们时,我的生活会轻松很多。 我想要类似的东西:
orientation[8];
orientation[0]=pointer;
orientation[1]=p_0;
orientation[2]=p_1;
orientation[3]=p_2;
orientation[4]=p_3;
等等。问题是有两种不同的尺寸;一个是hxw,另一个是wxh。我的第一个想法是:
int** orientation;
orientation = new int*[8]
for(i=0;i<8<;i++)
orientation[i]=new int*[h*w];
提前致谢。
【问题讨论】:
-
我本质上是想让我的所有方向在内存中彼此直接相邻。
-
我不明白你现在在做什么,什么能让你的生活更轻松。也许发布更多代码或改写问题?
-
我的意思是指向指针的指针。我想要一种方便的方式来访问我的八个二维矩阵(我已经生成并存储在内存中。我没有包含这部分代码。如果需要的话我会这样做)。我遇到的问题是我的 4 个矩阵是 hxw,4 个是 wxh。我想要类似 Orientation[8] 的东西
-
方向 [0] = 指针;方向[1] = p_0;等等……
标签: c++ arrays pointers tiling