complete 1024.rs 1063.rs 1108.rs 1111.rs 3086.rs 7695.rs 17256.rs 17371.rs 27634.rs 31846.rs
This commit is contained in:
39
storage/zeta/rs/completed/7695.rs
Normal file
39
storage/zeta/rs/completed/7695.rs
Normal file
@@ -0,0 +1,39 @@
|
||||
use std::cmp::max;
|
||||
use std::io::stdin;
|
||||
|
||||
fn longest_sub_regular_bracket_string(s: String) -> usize {
|
||||
let n = s.len();
|
||||
let mut dp = vec![vec![0; n]; n];
|
||||
|
||||
for dx in 1..n {
|
||||
for left in 0..n - dx {
|
||||
let right = left + dx;
|
||||
if (s.as_bytes()[left] == b'(' && s.as_bytes()[right] == b')')
|
||||
|| (s.as_bytes()[left] == b'[' && s.as_bytes()[right] == b']')
|
||||
{
|
||||
dp[left][right] = dp[left + 1][right - 1] + 2;
|
||||
}
|
||||
for k in left..right {
|
||||
dp[left][right] = max(dp[left][right], dp[left][k] + dp[k + 1][right]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dp[0][n - 1]
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let mut line = String::new();
|
||||
|
||||
loop {
|
||||
line.clear();
|
||||
stdin().read_line(&mut line).unwrap();
|
||||
if line.starts_with("end") {
|
||||
break;
|
||||
}
|
||||
|
||||
let s = line.trim().to_string();
|
||||
|
||||
println!("{}", longest_sub_regular_bracket_string(s));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user