【发布时间】:2020-12-21 19:18:35
【问题描述】:
我必须用随机数0 或1 填充一个矩阵,但如果一个单元格包含1,则它周围的其他8 个必须为0。作为初学者,我尝试在此实现我的代码方式:
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
a[i][j] = rand() % 2;
if (a[i][j] == 1) {
a[i-1][j-1] = 0;
a[i-1][j] = 0;
a[i-1][j+1] = 0;
a[i][j-1] = 0;
a[i][j+1] = 0;
a[i+1][j+1] = 0;
a[i+1][j] = 0;
a[i+1][j+1] = 0;
}
}
}
当然,我确信有一种更简单的方法可以编写此代码。你能帮助我吗?提前致谢!
【问题讨论】:
-
我不认为您所做的事情是不合理的,只是当在角落或边缘生成
1时,它会超出数组的边界,这将是相当频繁的。你需要避免这种情况。 -
@JohnBollinger 我知道我的代码有效,但我认为它是多余的。我确信有一种更简单、更清洁的方法可以做到这一点。这是我的问题,但无论如何我会解决你向我报告的错误,谢谢!
-
0+没有理由 -
假设 2 个相邻单元格包含
1?哪个决定?如果你用0覆盖其中一个,那么它的 个邻居呢?我认为你只能通过两阶段的过程来解决这个问题,从第一个数组创建第二个数组。 -
如果代码有效并且您正在寻找改进它的建议,Code Review 是合适的地方。但请先查看codereview.meta.stackexchange.com/questions/5777/…。
标签: c matrix random coding-style code-cleanup