【问题标题】:Dynamic Matrix Generator Class动态矩阵生成器类
【发布时间】:2013-01-20 15:32:53
【问题描述】:

我需要一个动态矩阵生成器类,它会返回一个int[4][4] 矩阵,值应该在 1 到 16 之间并且不会有重复值。

矩阵解决方案将是这样的:

如果您仔细观察矩阵图像,您会发现每个矩阵在矩阵值的位置上都有特定的逻辑/模式。模式是什么并不重要,但保持模式重要这意味着应该有任何类型的模式)。目前我正在使用静态代码,例如:

// for the second image    
int temp4[][] = { { 1, 2, 3, 4 }, { 12, 13, 14, 5 },
                        { 11, 16, 15, 6 }, { 10, 9, 8, 7 } }; 

目前我有 3/4 的静态模式,但静态实现它是一种不好的方法,所以它应该是动态的,因为我需要随机模式运行时。

所以我的问题是:是否有可能做出这样的解决方案?代码是什么??如果您知道与此相关的链接,请发布它或发布原始代码。

提前致谢。


更新

这个问题的模式是什么意思??

如果你仔细观察第一个矩阵,你会发现数字是第 1 行:1、2、3、4,然后第 2 行:5、6、7、8 等等。

对于第二个矩阵,它的第一行是 1,2,3,4,然后它下降为 5,6,7,然后返回为 8,9,10,依此类推。

另一种模式可能是这样的 第一列:1,2,3,4 然后第二列:5,6,7,8 所以矩阵看起来像:

1 5 9 13

2 6 10 14

3 7 11 15

4 8 12 16 .. 等等

因此,我需要一个矩阵生成器,它将返回 int[4][4],其非重复值从 1 到 16,并且值应该按顺序排列。另一种模式可能是:

和上面2个的模式是这样的:

【问题讨论】:

  • 如果你把模式贴出来就好了。通过那里的两个示例,社区无法猜测整个模式,只是做出一些可能不适合您的需求的假设。
  • 如果你想为此编写一个程序,你必须定义什么是“模式”。要获得任何不重复数字的随机矩阵,请从一个有效的矩阵开始,然后随机交换一些数字。
  • 在编辑我的帖子之前让我想一想,因为我可能更难以描述 模式
  • 所以,数字 1 总是在角落里?
  • @SoumyadipDas 做起来并不难(我只是没有时间)。为所有条目使用 -1 值(这将是一个空白)开始您的矩阵,然后设置起始位置(通过随机值)并开始更新它,通过遵循路径更改 1、2、3... 的 -1 值.路径将由实际位置的下一个位置定义。定义next,可以查看实际位置,在X或Y位置加上+1或-1,如果没有空格,下一个位置应该是空白(-1值) ,然后回去继续工作。当然,这将是一个回溯算法

标签: java android algorithm dynamic matrix


【解决方案1】:

根据您的更新,我将为每个模式创建一个策略。在每个模式中,您可以选择起点、方向以及升序或降序(如果允许)

一旦你有了一组模式,你可以随机选择一个并将其随机化,或者生成所有可能的模式并随机选择一个。


您可以使用 Collections.shuffle() 以随机顺序生成非重复值

然后您可以测试您的矩阵,看看它是否有足够的模式或是否可以接受。如果没有,请重复直到完成为止。

【讨论】:

  • 我可以这样做,但问题是如何检查模式?可能是这段代码中最难的部分。
  • 最困难的部分是定义什么是模式。
猜你喜欢
  • 2021-12-17
  • 2017-03-02
  • 2016-10-19
  • 2016-02-05
  • 1970-01-01
  • 2015-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多