输入一个整数n表示数量;然后输入n个数字表示从左到右的内容现在要对这串数字进行若干次交换使得相邻两数之间差值的绝对值总和最小并输出这个结果。用go实现这个程序
package main
import ( "fmt" "sort" )
func main() { var n int fmt.Scan(&n)
nums := make([]int, n)
for i := 0; i < n; i++ {
fmt.Scan(&nums[i])
}
sort.Ints(nums)
ans := make([]int, n)
l, r := 0, n-1
for i := 0; i < n; i++ {
if i%2 == 0 {
ans[i] = nums[l]
l++
} else {
ans[i] = nums[r]
r--
}
}
res := 0
for i := 1; i < n; i++ {
res += abs(ans[i] - ans[i-1])
}
fmt.Println(res)
}
func abs(x int) int { if x < 0 { return -x } return x }
原文地址: https://www.cveoy.top/t/topic/baxp 著作权归作者所有。请勿转载和采集!