给你一个序列,让你求(x1 - x2) + (x2 - x3) + ... + (xn - 1 - xn).值最大的一个序列,我们化简一下公式就会发现(x1 - x2) + (x2 - x3) + ... + (xn - 1 - xn).
= x1 - xn, 也就是说只有第一个和最后一个是确定的,其他的随便了! 也不是了, 还要让你按字典序最小的排列,也就是说其他的是按飞递减序排列的,简单的一次排序就OK了。
//2013-09-21-09.07 #include <stdio.h> #include <algorithm> using namespace std; int a[120]; bool cmp(int x, int y) { return x < y; } int main() { int n; while (scanf("%d", &n) != EOF) { for (int i = 1; i <= n; i++) { scanf("%d", &a[i]); } sort(a+1, a+n+1, cmp); swap(a[1], a[n]); for (int i = 1; i < n; i++) printf("%d ", a[i]); printf("%d\n", a[n]); } return 0; }