gpt4 book ai didi

c++ - 如何使用指向指针的指针存储 Polyomino 的对称性?

转载 作者:太空宇宙 更新时间:2023-11-04 14:33:53 25 4
gpt4 key购买 nike

好的,我正在编写离散平铺问题的代码。我正在存储名为 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];

提前致谢。

最佳答案

数组的元素存储在内存中的连续位置,因此您可以获取地址并对其进行一些计算,如下所示:

int arr[] = { 0, 1, 2, 3, 4, 5 };
int* a = &arr[0]; // Address of the beginning of the array (i.e index 0)
int* b = a + 3; // Address of index 3, behind the scene it does a + (3 * sizeof(int))

cout << "index 0 : " << *a << endl;
cout << "index 3 : " << *b << endl << endl;

int d = 0, e = 1, f = 2;
int* arr2[] = { &d, &e, &f }; // Array of pointers
int** address = &arr2[1]; // Pointer to a pointer
int*** address_of_handle = &address; // Address of that pointer
cout << "index 1 : " << ***address_of_handle;

但除了熟悉指针之外,我想知道你为什么要这样做?

关于c++ - 如何使用指向指针的指针存储 Polyomino 的对称性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30225817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com