gpt4 book ai didi

c - 如果可能的话,如何在 C 中定义 2 位数?

转载 作者:太空狗 更新时间:2023-10-29 15:44:17 24 4
gpt4 key购买 nike

对于我的大学过程,我正在模拟一个称为随机顺序吸附的过程。我必须做的一件事是将正方形(不能重叠)随机放置到格子上,直到没有更多空间为止,重复该过程几次以找到平均“干扰”覆盖率百分比。

基本上,我对一个大型整数数组执行操作,其中存在 3 个可能的值:0、1 和 2。标有“0”的站点为空,标有“1”的站点已满。最初数组是这样定义的:

int i, j;
int n = 1000000000;
int array[n][n];

for(j = 0; j < n; j++)
{
for(i = 0; i < n; i++)
{
array[i][j] = 0;
}
}

假设我想在阵列上随机放置 5*5 个方 block (不能重叠),这样这些方 block 就用“1”表示。这将通过随机选择 x 和 y 坐标然后创建一个 5*5 的“1”正方形来完成,正方形的左上角点从该点开始。然后我会将广场附近的地点标记为“2”。这些代表不可用的站点,因为在这些站点放置一个正方形会导致它与现有正方形重叠。这个过程将一直持续到阵列上没有更多空间可以放置方 block (基本上,阵列上不再有“0”)

总而言之,切入正题。我想通过使用按位运算使这个过程尽可能高效。如果我不必在方 block 附近标记站点,这将很容易。我想知道是否可以创建一个 2 位数字,以便我可以说明标有“2”的站点。

抱歉,如果这听起来很复杂,我只是想解释一下我为什么要这样做。

最佳答案

您不能创建 2 位大小的数据类型,因为它不可寻址。你可以做的是将几个 2 位数字打包到一个更大的单元格中:

   struct Cell {
a : 2;
b : 2;
c : 2;
d : 2;
};

这指定每个成员 a , b , cd应该在内存中占用两位。

编辑:这只是一个如何创建 2 位变量的示例,对于所讨论的实际问题,最有效的实现可能是创建一个 int 的数组。并在几个 set 中结束这些摆弄/get方法。

关于c - 如果可能的话,如何在 C 中定义 2 位数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2499978/

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