만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

격자 색칠하기

시간 제한1초메모리 제한512 MB

요약
파란 칸이 있으면 왼쪽 위 모서리부터 그 칸까지의 직사각형이 모두 파란색이어야 할 때, 주어진 격자를 칠하는 경우의 수를 센다.
난이도

보통10점 중 7점

유형
동적 계획법, 조합론, 수학
정답자
아직 제출이 없습니다

문제

세로 mm칸, 가로 nn칸인 격자의 모든 칸을 빨강 또는 파랑으로 칠하려고 한다. 색칠은 다음 조건을 모두 만족해야 한다.

  • 모든 칸을 칠한다.
  • 일부 칸은 색이 이미 정해져 있다. 이미 정해진 칸의 색은 바꿀 수 없다.
  • 파란 칸마다, 격자의 왼쪽 위 칸과 그 칸을 양 끝으로 하는 직사각형 안의 칸이 모두 파랑이어야 한다.

조건을 만족하는 서로 다른 색칠 방법이 몇 가지인지 구하라. 격자는 회전할 수 없다.

입력

첫째 줄에 두 정수 mm과 nn이 공백으로 구분되어 주어진다 (1≤m,n≤301 \le m, n \le 30).

다음 mm개의 줄에는 격자를 나타내는 nn개의 문자가 주어진다. 문자 B는 이미 파랑으로 칠한 칸, R는 이미 빨강으로 칠한 칸, .는 아직 칠하지 않은 칸이다.

출력

서로 다른 색칠 방법의 수를 한 줄에 출력한다.

힌트

첫 번째 예제에서 가능한 색칠 6가지는 다음과 같다.

BB   BB   BR   BR   BB   BB
BB   BR   BR   BR   BR   BB
BR   BR   BR   RR   RR   RR

예제3

  1. 예제 1

    입력
    3 2
    ..
    B.
    .R
    
    예상 출력
    6
    
  2. 예제 2

    입력
    7 6
    ......
    .....B
    .B..R.
    ......
    ...B..
    .R....
    ...R..
    
    예상 출력
    3
    
  3. 예제 3

    입력
    2 2
    R.
    .B
    
    예상 출력
    0