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:
2026-03-06 16:01:01 +09:00
parent 381b9ef968
commit 12445715dd
10 changed files with 619 additions and 0 deletions

View 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));
}
}