想象一下,你得到一个正整数矩阵(最大25 * 15,数值不超过3000000)。当您进行列总和并选择最小和最大的一个时,它们之间的差异必须尽可能小。
您可以在每行(换行)中交换数字,而不是在列中交换您想要的次数。
你将如何解决这个问题?
我不是要求你的代码,而是你的想法。
提前致谢
答案 0 :(得分:1)
我会尝试使用模拟退火来解决问题。这是该计划的草图:
步骤6对于性能(大型矩阵)至关重要。
答案 1 :(得分:0)
坏消息是没有限制的这个问题是NP难的,并且大规模的精确动态编程似乎是不可能的。我认为我的第一种方法是大邻域局部搜索:反复选择一个小的随机子矩阵(行和列),使其能够接受蛮力并选择最佳排列,同时保持矩阵的其余部分不受干扰。