<figure class="highlight java"><table><tr><td class="code"><pre><span class="line"><span class="keyword">import</span> java.util.Arrays;</span><br><span class="line"></span><br><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title class_">Main</span> {</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">static</span> String ans;</span><br><span class="line"></span><br><span class="line"> <span class="keyword">public</span> <span class="keyword">static</span> String <span class="title function_">solution</span><span class="params">(<span class="type">int</span> n, <span class="type">int</span>[] sums)</span> {</span><br><span class="line"> ans = <span class="string">"Impossible"</span>;</span><br><span class="line"> fullArrange(sums, <span class="number">0</span>, n);</span><br><span class="line"> <span class="comment">// System.out.println(ans);</span></span><br><span class="line"> <span class="keyword">return</span> ans;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title function_">check</span><span class="params">(<span class="type">int</span> n, <span class="type">int</span>[] sums)</span> {</span><br><span class="line"> <span class="type">int</span>[] nums = <span class="keyword">new</span> <span class="title class_">int</span>[n];</span><br><span class="line"> nums[<span class="number">0</span>] = (<span class="type">int</span>) Math.round((sums[<span class="number">0</span>] + sums[<span class="number">1</span>] - sums[n-<span class="number">1</span>]) / <span class="number">2.0</span>);</span><br><span class="line"> <span class="keyword">for</span> (<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">1</span>; i < n; i += <span class="number">1</span>) {</span><br><span class="line"> nums[i] = sums[i-<span class="number">1</span>] - nums[<span class="number">0</span>];</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">for</span> (<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> <span class="number">0</span>, k = <span class="number">0</span>; i < n; i += <span class="number">1</span>) {</span><br><span class="line"> <span class="keyword">for</span> (<span class="type">int</span> <span class="variable">j</span> <span class="operator">=</span> i+<span class="number">1</span>; j < n; j += <span class="number">1</span>) {</span><br><span class="line"> <span class="keyword">if</span> (nums[i] + nums[j] != sums[k++]) {</span><br><span class="line"> <span class="keyword">return</span>;</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> <span class="type">StringBuilder</span> <span class="variable">result</span> <span class="operator">=</span> <span class="keyword">new</span> <span class="title class_">StringBuilder</span>();</span><br><span class="line"> Arrays.sort(nums);</span><br><span class="line"> <span class="keyword">for</span> (<span class="type">int</span> num: nums) {</span><br><span class="line"> result.append(num + <span class="string">" "</span>);</span><br><span class="line"> }</span><br><span class="line"> ans = <span class="keyword">new</span> <span class="title class_">String</span>(result.deleteCharAt(result.length()-<span class="number">1</span>));</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="comment">// 全排列,确定sums第k位的值</span></span><br><span class="line"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title function_">fullArrange</span><span class="params">(<span class="type">int</span>[] sums, <span class="type">int</span> k, <span class="type">int</span> n)</span> {</span><br><span class="line"> <span class="keyword">if</span> (k == sums.length) {</span><br><span class="line"> check(n, sums);</span><br><span class="line"> <span class="keyword">return</span>;</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">for</span> (<span class="type">int</span> <span class="variable">i</span> <span class="operator">=</span> k, l = sums.length; i < l; i += <span class="number">1</span>) {</span><br><span class="line"> swap(sums, i, k);</span><br><span class="line"> fullArrange(sums, k + <span class="number">1</span>, n);</span><br><span class="line"> swap(sums, i, k);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> </span><br><span class="line"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title function_">swap</span><span class="params">(<span class="type">int</span>[] a, <span class="type">int</span> i, <span class="type">int</span> j)</span> {</span><br><span class="line"> <span class="type">int</span> <span class="variable">t</span> <span class="operator">=</span> a[i];</span><br><span class="line"> a[i] = a[j];</span><br><span class="line"> a[j] = t;</span><br><span class="line"> }</span><br><span class="line"></span><br><span class="line"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title function_">main</span><span class="params">(String[] args)</span> {</span><br><span class="line"> <span class="comment">// You can add more test cases here</span></span><br><span class="line"> <span class="type">int</span>[] sums1 = {<span class="number">1269</span>, <span class="number">1160</span>, <span class="number">1663</span>};</span><br><span class="line"> <span class="type">int</span>[] sums2 = {<span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>};</span><br><span class="line"> <span class="type">int</span>[] sums3 = {<span class="number">226</span>, <span class="number">223</span>, <span class="number">225</span>, <span class="number">224</span>, <span class="number">227</span>, <span class="number">229</span>, <span class="number">228</span>, <span class="number">226</span>, <span class="number">225</span>, <span class="number">227</span>};</span><br><span class="line"> <span class="type">int</span>[] sums4 = {-<span class="number">1</span>, <span class="number">0</span>, -<span class="number">1</span>, -<span class="number">2</span>, <span class="number">1</span>, <span class="number">0</span>, -<span class="number">1</span>, <span class="number">1</span>, <span class="number">0</span>, -<span class="number">1</span>};</span><br><span class="line"> <span class="type">int</span>[] sums5 = {<span class="number">79950</span>, <span class="number">79936</span>, <span class="number">79942</span>, <span class="number">79962</span>, <span class="number">79954</span>, <span class="number">79972</span>, <span class="number">79960</span>, <span class="number">79968</span>, <span class="number">79924</span>, <span class="number">79932</span>};</span><br><span class="line"></span><br><span class="line"> System.out.println(solution(<span class="number">3</span>, sums1).equals(<span class="string">"383 777 886"</span>));</span><br><span class="line"> System.out.println(solution(<span class="number">3</span>, sums2).equals(<span class="string">"Impossible"</span>));</span><br><span class="line"> System.out.println(solution(<span class="number">5</span>, sums3).equals(<span class="string">"111 112 113 114 115"</span>));</span><br><span class="line"> System.out.println(solution(<span class="number">5</span>, sums4).equals(<span class="string">"-1 -1 0 0 1"</span>));</span><br><span class="line"> System.out.println(solution(<span class="number">5</span>, sums5).equals(<span class="string">"39953 39971 39979 39983 39989"</span>));</span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure>]]></content>
0 commit comments