首先将的每一对相邻两项求和,得到一个数组。那么数组的最大值减最小值即为数组的权值。
例如,若,那么,数组的极差是1。因此数组的权值为1。
现在小美希望你能构造一个长度为的排列,满足权值尽可能小。你能帮帮她吗?排列是指一个长度为的数组,其中 1 到每个元素恰好出现一次。
一个正整数,代表排列的长度。
一个合法的排列。如果有多解输出任意即可。
3
2 1 3
这个数组的权值为 1。输出[2,3,1]等排列也是合法的。
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { private static final Scanner sc = new Scanner(System.in); public static void main(String[] args) { question05(); } private static void question05() { int left = 1, right = sc.nextInt(); StringBuilder sb = new StringBuilder(); while (left < right) { sb.append(left++).append(" ").append(right--).append(" "); } if (left == right) { sb.append(left); } System.out.println(sb); } }