小米3月23笔试算法题"排队选人"答案
package main
import "fmt"
func main() {
var n, k, a, b int
fmt.Scan(&n, &k, &a, &b)
ai := make([]int, n)
bi := make([]int, n)
for i := 0; i < n; i++ {
fmt.Scan(&ai[i])
}
for i := 0; i < n; i++ {
fmt.Scan(&bi[i])
}
dp := make([]int, n)
var count int
for i := 0; i < k; i++ {
if ai[i] >= a && bi[i] >= b {
count++
}
}
if count == k {
dp[k-1] = 1
}
for i := k; i < n; i++ {
count = 0
for j := i - k + 1; j <= i; j++ {
if ai[j] >= a && bi[j] >= b {
count++
}
}
if count == k {
dp[i] += dp[i-1] + 1
} else {
dp[i] += dp[i-1]
}
}
fmt.Println(dp[n-1])
}
//10 2 2 4
//2 2 9 1 8 1 6 1 7 7
//4 8 5 1 9 4 1 3 9 4
golang 版本,使用动态规划做的,当时看错题,哎。
查看24道真题和解析