【发布时间】:2012-06-17 01:31:06
【问题描述】:
这是我在Interviewstreetcodesprint 期间遇到的一个问题。 我无法找到解决方案,甚至无法思考其方向。如果有人能帮助我找到灵魂,或者解释我需要如何处理这个问题,我将不胜感激。
给定数字 1, 2, 3, .., N,按顺序排列它们,使得 相邻数的乘积之和最大化。
例如:如果 N = 3,我们将它们排序为 (1, 2, 3),则 products 是 1*2 + 2*3 = 8 如果我们将它们排序为 ( 1, 3 ,2 ) 总和 产品数量为 1*3 + 3*2 = 9。
输入格式:
输入的第一行包含 T,即测试用例的数量。然后 跟随 T 行,每行包含一个整数 N。
输出格式:
对于每个测试用例打印相邻乘积的最大总和 数字。
示例输入:
2 2 4
示例输出:
2 23
说明:
在第一个测试用例中,给定的排列是 (1, 2)。所以最大和 产品为 1*2。在第二个测试用例中,数字是 (1,2,3,4)。 排列 1,3,4,2 具有相邻数字的乘积之和为 1*3+3*4+4*2 = 23。没有其他排列有相邻乘积之和 超过 23 的数字。
约束:
1
【问题讨论】:
标签: algorithm mathematical-optimization