mrlolthe1st

Untitled

Aug 13th, 2021
1,547
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 0.97 KB | None | 0 0
  1. Const
  2.     MaxN = 101;
  3.     Inf = 10000;
  4. Var
  5.     Ans : Array [1 .. MaxN, 1 .. MaxN] Of LongInt;
  6.     Inv : Array [Char] Of Char;
  7.     S : String;
  8.     I, J : LongInt;
  9. Function Min(A, B : LongInt) : LongInt;
  10. Begin
  11.     Min := A;
  12.     If A > B Then Min := B;
  13. End;
  14. Function X(L, R : LongInt) : LongInt;
  15. Var
  16.     Best, J : LongInt;
  17. Begin
  18.     If L > R Then
  19.     Begin
  20.         X := 0;
  21.         Exit;
  22.     End;
  23.     If L = R Then
  24.     Begin
  25.         X := 1;
  26.         Exit;
  27.     End;
  28.     If Ans[L, R] <> Inf Then
  29.     Begin
  30.         X := Ans[L, R];
  31.         Exit;
  32.     End;
  33.     Best := Inf;
  34.     If Inv[S[L]] = S[R]
  35.     Then Best := X(L + 1, R - 1);
  36.     For J := L To R - 1 Do
  37.         Best := Min(Best, X(L, J) + X(J + 1, R));
  38.     Ans[L, R] := Best;
  39.     X := Best;
  40. End;
  41. Begin
  42.     Inv['('] := ')';
  43.     Inv['['] := ']';
  44.     Inv['{'] := '}';
  45.     For I := 1 To MaxN Do
  46.         For J := 1 To MaxN Do
  47.             Ans[I, J] := Inf;
  48.     ReadLn(S);
  49.     WriteLn(X(1, Length(S)));
  50. End.
Advertisement
Add Comment
Please, Sign In to add comment