【发布时间】:2013-10-26 12:42:35
【问题描述】:
不懂BINGO游戏的小伙伴们,玩的方法如下
1) 你得到一张 BINGO 卡,其中有一个随机打印的 NXN 数字矩阵。数字是唯一的。打印的最大数字可以大于 N^2。例如如果你有 5x5 矩阵,那么最大数字也可以是 75。但是数字的范围是预先确定的,比如 1 到 M。
2) 一个人随机说出 1 到 M 范围内的数字。
3)如果号码在你的卡上,你就划掉号码。
4) 交叉数字的过程是重复的。当你越过整行或整列或两条对角线时,你就会得到你的第一个宾果游戏 游戏仍在继续,因为 N 行、N 列和 2 条对角线的 BINGO 总数可能为 N+N+2。
现在我想为它创建一个算法。用户将输入随机数,算法将听到它们并在矩阵中交叉它的数字(已经提供)。一旦它得到 BINGO,它就会声明它。什么是最好的方法
我尝试为卡片维护一个二维矩阵
当一个数字被宣布时,我在 O(NxN) 时间内搜索它。当我找到它时,我将它设为 0。
设为0后,搜索对应的行列是否全为零。如果在对角线上,我也搜索对角线。耗时O(3N)。
有更好的方法吗?
【问题讨论】:
-
是的,尺寸可能会改变!!!这就是为什么我把
NxN写成大小