これは、 Interviewstreetの コードプリント中に遭遇した質問です。私は解決策を見つけることができず、その方向性を考えることさえできませんでした。誰かが私が魂を見つけるのを手伝ってくれるか、問題がどのように対処される必要があるかを私に説明してくれたらありがたいです。
数1、2、3、..、Nが与えられた場合、隣接する数の積の合計が最大になるような順序でそれらを配置します。
例:N = 3の場合、(1、2、3)として注文すると、積の合計は1 * 2 + 2 * 3 = 8になり、(1、3、2)として注文すると、合計製品の数は1*3 + 3 * 2=9です。
入力フォーマット:
入力の最初の行には、テストケースの数であるTが含まれています。次に、それぞれが整数Nを含むT行に従います。
出力フォーマット :
テストケースごとに、隣接する数値の積の最大合計を印刷します。
サンプル入力:
2 2 4
サンプル出力:
2 23
説明 :
最初のテストケースでは、順列は(1、2)です。したがって、積の最大合計は1*2です。2番目のテストケースでは、数値は(1,2,3,4)です。アレンジメント1、3、4、2は、隣接する数の積の合計が1 * 3 + 3 * 4 + 4 * 2 = 23です。他のアレンジメントは、隣接する数の積の合計が23を超えることはありません。
制約:
1 <= T <= 10 1 <= N <= 200000