小米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 版本,使用动态规划做的,当时看错题,哎。