连接时的长度L,当N (1 ≦ N ≦ 5000) 的棒材长度由标准输入提供时,是将N 根棒材中的三个长度连接起来的L 请编写程序求的组合总数。但是,和单个条的长度一样,被拼凑起来的长度(L)是一个正整数,在32bit整数范围内是足够处理的。此外,它还具有所有长度不同的棒材。例如)输入:155841032输出:2 //{{2, 3, 10}, {3, 4, 8}}示例 2) 输入:35101312171041831157输出:6 //{{4, 13, 18}, {5, 12, 18}, {5, 13, 17}, {7, 10, 18}, {7, 11, 17}, {10, 12, 13}}我的答案就在这里package mainimport ( "fmt" "sort")func main() { input_count := 0 var target int var count int var v int var array []int for read_count, _ := fmt.Scan(&v); read_count != 0; read_count, _ = fmt.Scan(&v) { if 0 == input_count { target = v } else if 1 == input_count { count = v array = make([]int, count) } else { array[input_count-2] = v } input_count++ } sort.Ints(array) fmt.Println(Calculate(target, count, array))}func Except(pair []int, count int, array []int) []int { except := make([]int, count-pair[2]) except_index := 0 on := false for _, v := range array { if on { except[except_index] = v except_index++ } if v == pair[1] { on = true } } return except}func ListUp(target int, count int, array []int) [][]int { max := array[count-1] list := make([][]int, Fact(count-1)) list_index := 0 for i, h := range array { if count > i+1 && target > h+array[i+1] { for j, v := range array[i+1:] { if count > i+j+1 && target <= max+h+v && target > h+v { list[list_index] = []int{h, v, i + j + 1} list_index++ } } } } return list}
2 回答
- 2 回答
- 0 关注
- 165 浏览
添加回答
举报
0/150
提交
取消