对于那些不知道宾果游戏的人来说,它的玩法如下
1)您得到一张 BINGO 卡,其中有一个随机打印的 NXN 数字矩阵。数字是唯一的。打印的最大数字可以大于 N^2。例如,如果您有 5x5 矩阵,那么最大数字也可以是 75。但是数字的范围是预先确定的,例如 1 到 M。
2) 一个人随机说出 1 到 M 范围内的数字。
3)如果号码在你的卡上,你划掉号码。
4)重复数字交叉的过程。当你穿过一整行或整列或两条对角线时,你就得到了你的第一个宾果游戏仍然继续,因为可能的宾果总数为 N+N+2 N行,N 列和 2 条对角线。
现在我想为它创建一个算法。用户将输入随机数,算法将听到它们并在矩阵中交叉它的数字(已经提供)。一旦它得到 BINGO,它就会声明它。最好的方法是什么
我尝试将其作为卡的二维矩阵
当一个数字被宣布时,我会在 O(NxN) 时间内搜索它。当我找到它时,我将它设为 0。
将其设为0后,我搜索相应的行和列现在是否全为零。如果它在对角线上,我也搜索对角线。它需要O(3N)时间。
有更好的方法吗?