【问题标题】:How to count number of neighbors in a matrix?如何计算矩阵中的邻居数?
【发布时间】:2014-03-03 01:12:45
【问题描述】:

好的,所以我正在用 C 语言制作生命游戏,但我不知道如何从矩阵中计算邻居数..

这是我当前的代码

http://pastebin.com/8fTdbpfs

抱歉,我认为它在 pastebin 上看起来更好。

【问题讨论】:

  • 我建议发布相关的代码部分。如果人们不必为你的邻居计算搜索几千行代码,你会得到更多的答案。
  • 嗯,这都是相关的,因为我希望如果有什么我需要改变的,他们可以让我知道。无论如何,代码也非常小@jcyost
  • 那个链接打不开,可能是被GFW屏蔽了。
  • @leeduhem 大声笑它的粘贴箱,它是如何被阻止的?试试这个pastebin.com/SiWk6xFJ
  • @MattRay 这个对我仍然不起作用。叹息。

标签: c++ dynamic file-io multidimensional-array conways-game-of-life


【解决方案1】:

对于位置(i,j)的单元格,即第i行第j列,其所有八个邻居的坐标为

(i-1,j-1) | (i-1,j) | (i-1,j+1)
----------+---------+----------
(i,  j-1) | (i  ,j) | (i  ,j+1)
----------+---------+----------
(i+1,j-1) | (i+1,j) | (i+1,j+1)

在二维数组array[row][col] 中,您可以通过array[i][j] 访问它们。当然,您需要确保每个坐标都有效,然后再尝试访问该坐标处的单元格,您可以使用以下条件进行检查:

// for coordinate (i, j) in array[row][col]
if ((0 <= i) && (i < row) && (0 <= j) && (j < col)) {
    /* access array[i][j] */
}

【讨论】:

  • 我只是不知道如何计算邻居数并检查边界! :(
  • 我的意思是我知道如何编写基本的 if 语句来检查单元格是否还活着然后 ++count 但我不知道如何检查边界
  • 那么在里面 if(array1[i][j] == alive) count++ ??
  • 对不起,我是 C++ 新手,老实说,我很想得到答案,但我对此感到很困惑
  • @MattRay 如果这就是你想要的,那么直接在“game of life c++”上的谷歌可以给你很多代码。阅读它们,尝试理解,然后您可能会自己写出更好的。
猜你喜欢
  • 1970-01-01
  • 2012-10-04
  • 2016-04-06
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多