猿问

在数组中找到 3 对的挑战

连接时的长度L,当N (1 ≦ N ≦ 5000) 的棒材长度由标准输入提供时,是将N 根棒材中的三个长度连接起来的L 请编写程序求的组合总数。但是,和单个条的长度一样,被拼凑起来的长度(L)是一个正整数,在32bit整数范围内是足够处理的。此外,它还具有所有长度不同的棒材。


例如)输入:


15

5

8

4

10

3

2

输出:


2 //{{2, 3, 10}, {3, 4, 8}}

示例 2) 输入:


35

10

13

12

17

10

4

18

3

11

5

7

输出:


6 //{{4, 13, 18}, {5, 12, 18}, {5, 13, 17}, {7, 10, 18}, {7, 11, 17}, {10, 12, 13}}

我的答案就在这里


package main


import (

    "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

}


慕侠2389804
浏览 166回答 2
2回答
随时随地看视频慕课网APP

相关分类

Go
我要回答