技巧:
单维度套路贪心
思路:
------- A , B ------- (A在前和B在前不会影响到前后的最优策略)
那么什么情况A在前呢? ====> A + B > B + A
实现:
package main import "fmt" func main() { // 参数接收 var n int fmt.Scan(&n) arr := make([]string, n) for i := 0; i < n; i++{ fmt.Scan(&arr[i]) } if n == 0{ fmt.Println("") }else { ans := "" sort(arr) for i := 0; i < n; i++ { ans += arr[i] } fmt.Println(ans) } } // (a + b) > (b + a) => true func compare(a, b string)bool{ var1, var2 := a + b, b + a for i := 0; i < len(var2); i++ { if var1[i] < var2[i] { return false }else if var1[i] > var2[i] { return true } } return false } // 插入排序 func sort(arr []string) { for i := 1; i< len(arr); i++ { for j := i; j > 0 && compare(arr[j],arr[j - 1]); j-- { arr[j],arr[j - 1] = arr[j - 1],arr[j] } } }