Open zwwhdls opened 4 years ago
题意:有 n 个柱子,每个柱子上有一个半径为 ai 的圆盘,要求按从大到小的顺序叠起来;有以下几点限制:
思路:先找到半径最大的圆盘,记录下该圆盘半径为 max,开始向两边遍历,依次看两边的数是否比 max 小,如果是,将 max 置为该值,再向两边移动。一旦遇到比 max 大的,输出 NO;若全部遍历完,输出 YES.
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
input := bufio.NewReader(os.Stdin)
var num int
_, err := fmt.Fscanf(input, "%d\n", &num)
if err != nil {
}
var pillar = make([]int, num)
var index, max int
for i := 0; i < num; i++ {
_, err := fmt.Fscanf(input, "%v", &pillar[i])
if pillar[i] > max {
max = pillar[i]
index = i
}
if err != nil {
}
}
for i, j := 1, 1; ; {
left := 0
right := 0
if index-i >= 0 {
left = pillar[index-i]
}
if index+j < num {
right = pillar[index+j]
}
if index-i < 0 && index+j >= num {
break
}
if left < max && left >= right {
max = left
i++
continue
}
if right < max && right > left {
max = right
j++
continue
}
fmt.Println("NO")
return
}
fmt.Println("YES")
}
昨天死在 A 题上了(:з」∠)
A 题
题意:给你 n 个木棍 ,求出可以组成楼梯的最大台阶数。 根据题意可列出方程:
然后!第一个 case 就挂!!最后经 @BLF2 同学指导,发现是输入可能以空格结束,用 Scan 可以,用 Scanln 就不行。(╯‵□′)╯︵┻━┻
后来用 Py 过的:
总结: 不用 Scanln 获取输入!!!