행의 수가 N 이고 열의 수가 M인 격자의 각 칸에 1부터 N×M까지의 번호가 첫 행부터 시작하여 차례로 부여되어 있다. 격자의 어떤 칸은 ○ 표시가 되어 있다. (단, 1번 칸과 N×M번 칸은 ○ 표시가 되어 있지 않다. 또한, ○ 표시가 되어 있는 칸은 최대 한 개이다. 즉, ○ 표시가 된 칸 이 없을 수도 있다.)
행의 수가 3이고 열의 수가 5인 격자에서 각 칸에 번호가 1부터 차례대로 부여된 예가 아래에 있다. 이 격자에서는 8번 칸에 ○ 표시가 되어 있다.
격자의 1번 칸에서 출발한 어떤 로봇이 아래의 두 조건을 만족하면서 N×M번 칸으로 가고자 한다.
1 → 2 → 3 → 8 → 9 → 10 → 15 1 → 2 → 3 → 8 → 13 → 14 → 15격자에 관한 정보가 주어질 때 로봇이 앞에서 설명한 두 조건을 만족하면서 이동할 수 있는 서로 다른 경로가 총 몇 개나 되는지 찾는 프로그램을 작성하라.
수행 시간은 1초를 넘을 수 없다. 메모리 제한은 64MB이다.
N 과 M이 동시에 1인 경우는 없다.
입력 3 5 8 출력 9 입력 7 11 0 출력 8008 입력 7 11 76 출력 5005
출처: 제31회 한국정보올림피아드 전국본선 (2014.7.11) 중등부 문제 1대회 풀이