有一个包含N个整数的数组(N <5x10 ^ 5),有两个玩家(A和B)依次删除该数组的元素。 A试图使最后剩下的数字更大,而B试图使其更小。
*两个玩家只能删除第一个元素或最后一个元素。 *A首先开始删除。
例如; A = [3,100,4,50]
-A将删除50,因为如果A删除3,则B可以删除100,这不是A想要的事情。
我已经使用动态编程解决了这个问题,但问题在于内存。我使用了一个二维整数数组进行记忆化,当我收到一个大小为10 ^ 5的数组时,它会消耗大量内存(对于这种情况,10 ^ 5x10 ^ 5x2 = 2x10 ^ 10字节,即18.6吉字节)。但是我希望以最多512 mb的内存解决此问题。我的问题是“解决此问题的更有效的空间利用率方法是什么?”。
*两个玩家只能删除第一个元素或最后一个元素。 *A首先开始删除。
例如; A = [3,100,4,50]
-A将删除50,因为如果A删除3,则B可以删除100,这不是A想要的事情。
我已经使用动态编程解决了这个问题,但问题在于内存。我使用了一个二维整数数组进行记忆化,当我收到一个大小为10 ^ 5的数组时,它会消耗大量内存(对于这种情况,10 ^ 5x10 ^ 5x2 = 2x10 ^ 10字节,即18.6吉字节)。但是我希望以最多512 mb的内存解决此问题。我的问题是“解决此问题的更有效的空间利用率方法是什么?”。
n = 100
,数字A [33]
和A [66]
是大数,而其他数字都很小。玩家 A 是否能够获得其中一个大数作为最后剩下的数? - Gassa