【发布时间】:2014-01-19 17:15:44
【问题描述】:
基本上,对于分配,我需要创建一个 C# 程序,它将一个数字作为输入 (n),然后创建一个大小为 n*n 的二维数组,其中数字为 1 到 (n*n)。它需要使用蛮力方法。我已经这样做了,但目前程序每次都会随机生成数字的顺序,所以它有时会多次检查相同的顺序。显然这意味着检查任何大于 3 的数字都需要很长时间,即使是 3 也可能需要几分钟。基本上我想知道是否有任何方法可以让它只检查每个订单一次。我只被允许使用“基本”C# 函数,所以只有 *、/、+、- 之类的东西,而没有 .Shuffle 之类的东西。
【问题讨论】:
-
你能自己写shuffle函数吗?这真的很容易做到。
-
1) 向我们展示了您到目前为止所拥有的东西,以及 2) 您所说的蛮力是什么意思,为什么必须使用它? 3)如果你真的是指真正的蛮力(穷举搜索所有可能的组合),它显然对这个问题有严重的指数增长,即使是三个也应该很慢。
-
根据您所做的,我假设这些数字必须随机分布在网格中(不仅仅是从左上角的 1 开始)。这是正确的吗?
-
你用“订单”这个词是什么意思?
-
@Dukeling 是的,我有一个函数来创建数组,一个是洗牌,一个是把数字放入二维数组,一个是检查行、列和主对角线相等。目前我的主程序只是连续运行所有函数,然后如果校验和函数返回 false,那么它会再次运行它们。
标签: c# algorithm magic-square