32 lines
680 B
Rust

pub struct Solution;
impl Solution {
pub fn new21_game(n: i32, k: i32, max_pts: i32) -> f64 {
if k == 0 || n >= k + max_pts {
return 1f64;
}
let mut result = 0f64;
let mut table = vec![0f64; (n + 1) as usize];
table[0] = 1f64;
let mut sum = 1f64;
for i in 1..(n + 1) {
let prob = sum / max_pts as f64;
table[i as usize] = prob;
if i < k {
sum += prob;
} else {
result += prob;
}
if i >= max_pts {
sum -= table[(i - max_pts) as usize];
}
}
result
}
}