#974. 统计简单路径

统计简单路径

问题描述

给定一个 HHWW 列的网格,令 (i,j)(i,j) 表示从上到下第 ii 行、从左到右第 jj 列的格子。

Si,jS_{i,j}. 时,该格子为空地;当 Si,jS_{i,j}# 时,该格子为障碍物。

请统计满足以下条件的路径数量:

一条路径表示为长度为 K+1K+1 的序列:

((i0,j0),(i1,j1),,(iK,jK))((i_0,j_0),(i_1,j_1),\dots,(i_K,j_K))

满足:

  • 对于每个 0kK0 \le k \le K,都有1ikH,1jkW1\le i_k\le H,\quad 1\le j_k\le W Sik,jk=’.’S_{i_k,j_k}=\texttt{'.'}
  • 对于每个 0k<K0\le k<K,都有ik+1ik+jk+1jk=1|i_{k+1}-i_k|+|j_{k+1}-j_k|=1 即每次只能向上、下、左、右移动一步;
  • 对于任意 0k<lK0\le k<l\le K,都有(ik,jk)(il,jl)(i_k,j_k)\ne(i_l,j_l) 即路径中不能重复经过同一个格子。

请输出满足条件的路径总数。

输入格式

输入从标准输入读入,格式如下:

H W KH\ W\ K

S1,1S1,2S1,WS_{1,1}S_{1,2}\dots S_{1,W}

S2,1S2,2S2,WS_{2,1}S_{2,2}\dots S_{2,W}

\vdots

SH,1SH,2SH,WS_{H,1}S_{H,2}\dots S_{H,W}

输出格式

输出一个整数,表示满足条件的路径数量。

样例输入1

2 2 2
.#
..

样例输出1

2

样例输入2

2 3 1
.#.
#.#

样例输出2

0

样例输入3

10 10 11
....#..#..
.#.....##.
..#...##..
...#......
......##..
..#......#
#........#
..##......
.###....#.
...#.....#

样例输出3

218070

说明

对于样例 1,共有两种合法路径:

  • (1,1)(2,1)(2,2)(1,1)\rightarrow(2,1)\rightarrow(2,2)
  • (2,2)(2,1)(1,1)(2,2)\rightarrow(2,1)\rightarrow(1,1)

评测数据规模

  • 1H,W101\le H,W\le 10
  • 1K111\le K\le 11
  • H,W,KH,W,K 均为整数
  • 每个 Si,jS_{i,j} 都是 .#
  • 网格中至少存在一个空地格子