두부장수 장홍준 3
시간 제한1초메모리 제한512 MB
문자 등급으로 채워진 N×M 격자에서 서로 겹치지 않는 가로 또는 세로 도미노를 골라 가격표에 따른 값의 합이 최대가 되도록 한다.
문제
장홍준은 꽤 특이한 두부장수다. 세로 크기가 , 가로 크기가 인 두부판을 크기의 두부로 잘라서 판다. 그런데 두부판은 칸마다 등급이 다르고, 두부의 가격은 그 두부를 이루는 두 칸의 등급에 따라 크게 달라진다. 가격표는 다음과 같다.
예를 들어 등급이 A인 칸과 C인 칸으로 이루어진 두부의 가격은 7이고, D인 칸과 B인 칸으로 이루어진 두부의 가격은 3이다. 표는 대칭이므로 두 칸의 순서는 가격에 영향을 주지 않는다.
두부판의 각 칸에는 A, B, C, D, F 중 하나의 등급이 매겨져 있다. 두부는 가로로 이웃한 두 칸이나 세로로 이웃한 두 칸을 잘라낸 것이고, 한 칸은 두부 하나에만 들어갈 수 있다. 홍준이는 잘라낸 두부 가격의 합이 최대가 되도록 두부판을 자르려고 한다. 두부를 잘라내고 남은 한 칸짜리 두부는 가격이 0이므로 버린다.
홍준이를 도와 잘라낸 두부 가격의 합이 최대가 되도록 두부판을 자르는 프로그램을 작성하시오.
입력
첫째 줄에 두부판의 세로 크기 과 가로 크기 이 주어진다. 과 은 1 이상 200 이하의 정수이다.
다음 개의 줄에는 각각 개의 문자가 공백 없이 주어진다. 각 문자는 그 칸의 두부 등급을 나타내며, A, B, C, D, F 중 하나이다.
출력
첫째 줄에 잘라낸 두부 가격의 합의 최댓값을 출력한다.