上机编程认证01-----获取上下车订单
/*
* Copyright (c) Huawei Technologies Co., Ltd. 2019-2021. All rights reserved.
* Description: 上机编程认证
* Note: 缺省代码仅供参考,可自行决定使用、修改或删除
* 只能import Go标准库
*/
package main
import (
"bufio"
"fmt"
"io"
"os"
"sort"
"strconv"
"strings"
)
// 待实现函数,在此函数中填入答题代码
func getTicketsNum(capacity int, ticketOrders [][]int) []int {
result := make([]int, 0)
totalOrders := len(ticketOrders)
//设标志数组区间并初始化
orderTagArr := make(map[int]int,20)
//设置交叉标志
orderTagRepeat := false
var sortNums []int
for i := 0;i < totalOrders;i++{
ticketOrder := ticketOrders[i]
if len(ticketOrder) > 3 {
return []int{}
}
for j := ticketOrder[0]; j < ticketOrder[1]; j++{
if _,ok := orderTagArr[j];!ok{
orderTagArr[j] = 100 - ticketOrder[2]
} else {
if orderTagArr[j] - ticketOrder[2] >= 0 {
orderTagArr[j] = ticketOrder[2]
}
orderTagRepeat = true
}
}
if !orderTagRepeat {
result = append(result,ticketOrder[2])
} else {
for _,value := range orderTagArr {
sortNums = append(sortNums,value)
}
sort.Ints(sortNums)
result = append(result,sortNums[0])
}
}
return result
}
func main() {
reader := bufio.NewReader(os.Stdin)
capacity := readInputInt(reader)
row := readInputInt(reader)
ticketOrders := readInputIntArrayFromNlines(reader, row, 3)
result := getTicketsNum(capacity, ticketOrders)
for ind, val := range result {
fmt.Print(val)
if ind != len(result)-1 {
fmt.Print(" ")
}
}
}
func readInputInt(reader *bufio.Reader) int {
var num int
if _, err := fmt.Fscanf(reader, "%d\n", &num); err != nil {
fmt.Println(err.Error())
return 0
}
return num
}
func readInputIntArrayFromNlines(reader *bufio.Reader, row int, col int) [][]int {
if row <= 0 {
return [][]int{}
}
result := make([][]int, 0, row)
for i := 0; i < row; i++ {
lineBuf, err := reader.ReadString('\n')
if err != nil && err != io.EOF {
fmt.Println(err.Error())
return nil
}
lineBuf = strings.TrimRight(lineBuf, "\r\n")
lineBuf = strings.TrimSpace(lineBuf)
ints := map2IntArray(lineBuf, " ")
if len(ints) != col {
fmt.Println("col len is not " + strconv.Itoa(col))
return nil
}
result = append(result, ints)
}
return result
}
func map2IntArray(str string, dem string) []int {
tempArray := strings.Split(str, dem)
result := make([]int, len(tempArray))
for index, value := range tempArray {
value = strings.TrimSpace(value)
intVal, err := strconv.Atoi(value)
if err == nil {
result[index] = intVal
}
}
return result
}
````` test ``````
package main
import (
"fmt"
"strconv"
"testing"
)
type testStruct1 = struct {
inputStr inputStruct
want string
}
type inputStruct struct {
input1 int
input2 [][]int
}
func TestSomeFunction(t *testing.T) {
tests1 := []testStruct1{
{inputStr: inputStruct{
100,
[][]int{
{4,7,60},
{1,3,50},
{2,6,50},
},
} ,want: "605040"},
{inputStr: inputStruct{
55,
[][]int{
{1,2,55},
{2,5,55},
},
} ,want: "5555"},
}
for _,tt := range tests1 {
got := getTicketsNum(tt.inputStr.input1,tt.inputStr.input2)
gotstr := ""
for _, val := range got {
gotstr += strconv.Itoa(val)
}
fmt.Println(got,tt.want)
if gotstr != tt.want {
t.Errorf("getTop3Num(%v) = %v, want %v", tt.inputStr, got, tt.want)
}
}
}
本文来自博客园,作者:易先讯,转载请注明原文链接:https://www.cnblogs.com/gongxianjin/p/16182135.html