特定大小的停车场,数组cars[]表示,其中1表示有车,0表示没车。 车辆大小不一,小车占一个车位(长度1),货车占两个车位(长度2),卡车占三个车位(长度3)。 统计停车场最少可以停多少辆车,返回具体的数目
输入 整型字符串数组cars[],其中1表示有车,0表示没车,数组长度小于1000。 输出 整型数字字符串,表示最少停车数目
package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
var inputCarsStr string
fmt.Scan(&inputCarsStr)
carsStrList := strings.Split(inputCarsStr, ",")
carsIntList := make([]int, len(carsStrList))
for i, s := range carsStrList {
carsIntList[i], _ = strconv.Atoi(s)
}
carCount := 0
for i := 0; i < len(carsIntList); i++ {
status := carsIntList[i]
if status > 0 {
carCount++
//检测右边相邻车位的情况
sum := 0
for rIndex, rStatus := range carsIntList {
if rIndex > i {
if sum >= 2 {
break
}
if rStatus == 1 {
sum++
} else {
break
}
}
}
i += sum
}
}
fmt.Println(carCount)
}
这里有一个易错点:当输入情况为 1,1,1,1时,达到三个1时需要立刻判断是卡车,并重新开始查找