#P1546. 回文数

回文数

问题描述

农场里的奶牛们觉得无聊。为了娱乐,他们在Farmer John的税务表格上找回文数。回文数是顺着读和倒着读都一样的数。比如,1234321是回文数,而1231不是。回文数的长度最短可以为1。

税务表格是一个N*N (2<=n<=20)的由0..9组成的表格。奶牛们想在表格上找到一条路径,使得经过的数字串成为一个回文数。例如,在下面的表格中,该路径得到的回文数为122221

1-2 0 0
   \
3 8 2=2
   /
3 1 8 9

3 4 5 4

上表中还有其他一些回文数,例如000,121,131,1331,13331,2002,318813,454,8338,可以有多种不同走法对应同一个回文数,且路径中允许有环路,比如121,122221,000。但是不允许有自环,即同一点上的数字连续出现二次,象9889,95559,9999999是不合法的回文数。

奶牛们想知道对于给定的长度L(1<=L<=18),有多少条符合条件的长度为L的回文数路径。请编一个程序,计算能构成回文数的路径总数。如果一条路径正着走和倒着走是不同的,则算两条路径。在上面的表格中,122221算作两条路径,因为它的两个端点分别在第一行的第一列和第三行的第二列。但是,949只能算一次,因为起点和终点是一样的。

程序名:palpath

输入格式:

第一行:N和L

第2..N+1行:N*N的表格,N行,每行N个数

样例输入palpath.in

3 3
1 2 3
1 2 3
1 2 3

输出格式:

回文数的个数(在长整型范围内)

样例输出:palpath.out

86