【发布时间】:2018-12-23 10:13:51
【问题描述】:
我想从中心开始填充一个矩阵。在此之后,我必须使用 rand () 函数提供位置,停止条件是找到邻居分配值为 1 的位置。必须这样做直到到达矩阵的边界,即当 x 或 y 假定位置为 0 或 (size-1) 时的 a
x = y = (size + 1) / 2;
matrix[x][y]=1; //default of the matrix
do{
x1=rand() %(size-1); //random position in x
y1=rand() %(size-1); // random position in y
matrix[x1][y1]=1; //declare the value in the position obtained
}while((matrix[x1-1][y1 ]==0)||
(matrix[x1+1][y1 ]==0)||
(matrix[x1 ][y1-1]==0)||
(matrix[x1 ][y1+1]==0)||
(x1==x)||(y1==y));
我的主要问题是我的条件是否为真,以及当我到达矩阵的边界时如何停止这种结合。
【问题讨论】:
-
“从中心开始填充矩阵”是什么意思?
-
看起来像一个洪水填充任务?
-
即先声明中心的位置为1,然后随机选择它的随机位置,直到得到的位置为next。因此,当您打印它时,您将拥有一个从中心填充的矩阵。
-
您必须首先检查数组索引的边界。另一种方法是使矩阵在每个方向上变大 2 个元素,初始化并使用无效值而不是检查索引边界。
-
也一样?我的想法是为每个值创建一个循环,直到找到一个被值 1 占据的相邻位置,然后是一个外部循环,根据数组的尺寸限制为迭代
标签: c algorithm matrix while-loop do-while