Tag: 多维数组

0-1多维背包

因此,我正在尝试生成一种算法,该算法将找到n项的最佳组合(在我的情况下为4),只能在背包中放置一次(0-1)并具有最大重量容量。 可能更有效地概括,我想在我的背包中放置不超过四个独特的物品,以便它们的重量小于某个值W,同时最大化它们的总价值。 我的第一次尝试和假设是将体积限制为4,所有项目体积为1,用于多维背包问题。 但我遇到的问题是它不是0-1(意思是否在袋中)。 然后我尝试制作一个多维的0-1(有界)背包代码,但我无法添加音量限制以及0-1要求。 如何编写0-1多维背包问题? 或者我如何调整代码只保留一个V卷,所有项目卷为1? 代码不一定是Java,但这就是我到目前为止所拥有的。 背包: package hu.pj.alg; import hu.pj.obj.Item; import java.util.*; public class ZeroOneKnapsack { protected List itemList = new ArrayList(); protected int maxWeight = 0; protected int solutionWeight = 0; protected int profit = 0; protected boolean calculated = false; public ZeroOneKnapsack() {} public ZeroOneKnapsack(int _maxWeight) { setMaxWeight(_maxWeight); } public […]

使用arrays数组(2D)或一维数组实现更高效的矩阵?

使用数组实现Matrix构造时哪个更有效? 使用一维数组或数组数组(2D)? 我认为2D更有效,因为您已经拥有元素的X和Y坐标,在1D实现中您必须计算索引。 编辑:它正在使用Java实现

java:如何将2d数组拆分为两个2d数组

我正在编写一个尽可能高效地乘法矩阵(2d数组)的程序,为此我需要将我的两个数组分成两个,然后将它们发送到第二个程序进行乘法运算。 我遇到的问题是如何在特定点(中途)将2darrays分成两个2darrays。 有没有人有任何想法?

数组数组与多维数组的性能比较

当我在大学里使用C ++时,我被告知尽可能使用多维数组(特此是MDA),因为它在一个大块中分配后表现出更好的内存局部性。 另一方面,arraysarrays(AoA)被分配在多个较小的块中,可能散布在物理存储器中的任何位置,无论何处发现空位。 所以我想第一个问题是:这是一个神话,还是值得关注的建议? 假设它是后者,那么接下来的问题就是如Java这样没有真正MDA的语言。 当然,用1DA模拟MDA并不难。 从本质上讲,具有MDA的语言的语法糖可以实现为对没有MDA的语言的库支持。 这值得努力吗? 对于像Java这样的语言来说,这是一个太低的优化问题吗? 我们应该放弃数组并使用List甚至原语吗? 另一个问题:在Java中,一次分配AoA( new int[M][N] )可能会产生不同于分层次的内存分配( new int[M][]; for (… new int[N] )?

在Java中检查二维数组中的邻居的更有效方法

嘿所有,对于我的一些大学作业,我发现需要检查二维arrays(网格)中的相邻单元格。 我使用的解决方案是使用exception的一些黑客攻击,我正在寻找一种方法来清理它,而不if像我的一些同学那样加载if语句。 我目前的解决方案是 for ( int row = 0; row < grid.length; row++ ) { for ( int col = 0; col < grid.length; col++ ) { // this section will usually be in a function // checks neighbours of the current "cell" try { for ( int rowMod = -1; rowMod <= 1; rowMod++ […]

Java HashMap关联多维数组无法创建或添加元素

好的,所以我花了几个小时试图围绕这个Java中的HashMap概念,但我只是无法解决它。 我看了很多教程,但似乎都没有解决我的确切要求,我无法让它工作。 我试图用Java(或类似的东西)创建一个关联的多维数组,这样我就可以使用字符串键保存到数组并从数组中检索。 这就是我在PHP中的表现,并最好地解释了我想要做的事情: //loop one – assign the names myArray[‘en’][‘name’] = “english name”; myArray[‘fr’][‘name’] = “french name”; myArray[‘es’][‘name’] = “spanish name”; //loop two – assign the description myArray[‘en’][‘desc’] = “english description”; myArray[‘fr’][‘desc’] = “french description”; myArray[‘es’][‘desc’] = “spanish description”; //loop three – assign the keywords myArray[‘en’][‘keys’] = “english keywords”; myArray[‘fr’][‘keys’] = “french keywords”; myArray[‘es’][‘keys’] […]

Java数组中的最大维数

出于好奇,你可以在Java中拥有多少个数组维度?

使用数组的矩阵乘法

我正在尝试使用多维数组( [2][2] )制作一个简单的矩阵乘法。 我对此有点新意,我无法找到它我做错了什么。 在告诉我它是什么时,我真的很感激。 我宁愿不使用库或类似的东西,我主要是这样做,以了解它是如何工作的。 非常感谢你提前。 我在main方法中声明我的arays如下: Double[][] A={{4.00,3.00},{2.00,1.00}}; Double[][] B={{-0.500,1.500},{1.000,-2.0000}}; A * B应该返回单位矩阵。 它没有。 public static Double[][] multiplicar(Double[][] A, Double[][] B){ //the method runs and returns a matrix of the correct dimensions //(I actually changed the .length function to a specific value to eliminate //it as a possible issue), but not the correct […]

查找数组中元素周围的元素

我有一个多维数组,我想获取该数组中特定元素周围的元素。 例如,如果我有以下内容: [[1,2,3,4,5,6] [8,9,7,5,2,6] [1,6,8,7,5,8] [2,7,9,5,4,3] [9,6,7,5,2,1] [4,7,5,2,1,3]] 如何查找上述任何元素周围的所有8个元素? 我如何处理边缘的元素? 我想到的一种方法是,为此编写一个9行代码,这很明显,但是有更好的解决方案吗?

Java中的多维数组长度

如何找到具有非相等索引的多维数组的长度? 例如,我有int[][] pathList = new int[6][4] 如果没有对索引进行硬编码,我需要找到’6’和’4’。 我可以找到带有pathList.length的6,但是如何获得’4’?