【发布时间】:2019-09-11 00:56:34
【问题描述】:
最近,我遇到了一个有趣的编程难题,其中提到了一些很好的转折。在令我惊讶的问题下方,我只是想知道在以下情况下可能在 java 中的任何相关解决方案是否可行。
问题陈述: 有一个尺寸为 m*n 的网格,最初,一个细菌存在于网格的左下角单元格(m-1,0),所有其他单元格都是空的。每一秒后,网格中的每个细菌都会自我分裂,并将相邻(水平、垂直和对角线)细胞中的细菌计数增加 1 并死亡。
n-1秒后右下角的细胞(m-1,n-1)有多少细菌? 我参考了 https://www.codechef.com/problems/BGH17 但未能提交解决方案 下面是更多问题的图片
【问题讨论】:
-
有一个明显的算法在 O(mnn) 中运行,我怀疑你能不能更快。
-
它与背包有什么关系吗?看起来好像不需要 NP-anything 算法...
-
@AndreyTyukin 老实说,我不知道任何 NP 算法,所以认为它可能与背包有关,因为提供的限制和价值(只是一个疯狂的猜测)
-
@BhargavModi 不清楚 4 个相邻单元格的分裂分布是什么。每个细菌分成 2 个,一个水平,一个垂直,但是如果有空间,它总是在左右或伪随机的 50%,或者它不分成 2 个细胞,而是分成 4 个,或者什么......还有对细菌的限制每个细胞计数?
-
@spektre 它似乎划分到网格内的所有相邻单元格(最多 8 个)。
标签: java algorithm matrix data-structures grid