为了账号安全,请及时绑定邮箱和手机立即绑定

在数组中找到 3 对的挑战

在数组中找到 3 对的挑战

Go
慕侠2389804 2021-10-18 13:54:31
连接时的长度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
提交
取消
意见反馈 帮助中心 APP下载
官方微信