沿着一条条斜线DP即可,dp[k][i][j]表示第k步,一端在第j列,另一端在第i列,构成回文的个数,沿着四个方向推下去即可。

 #include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <queue>
#include <stack>
#include <map>
#include <set> using namespace std; const int N=;
const int MOD=;
char g[N][N];
int dp[][N][N]; void add(int &a,int b) {
a+=b;
while (a>MOD)
a-=MOD;
}
int main () {
int T;
scanf("%d",&T);
while (T--) {
int n;
scanf("%d",&n);
for (int i=;i<=n;i++) {
scanf("%s",g[i]+);
for (int j=;j<=n;j++) {
dp[][i][j]=;
dp[][i][j]=;
}
}
if (g[][]!=g[n][n]){
puts("");
continue;
}
int s=;
dp[s][][n]=;
int ret=;
for (int k=;k<=n;k++) {
s^=;
for (int j1=,i1=k;j1<=k;j1++,i1--) {
for (int j2=n,i2=n-k+;j2>=n-k+;j2--,i2++) {
dp[s][j1][j2]=;
}
}
for (int j1=,i1=k;j1<=k;j1++,i1--) {
for (int j2=n,i2=n-k+;j2>=n-k+;j2--,i2++) {
if (g[i1][j1]!=g[i2][j2]) continue;
add(dp[s][j1][j2],dp[s^][j1][j2]);
add(dp[s][j1][j2],dp[s^][j1-][j2]);
add(dp[s][j1][j2],dp[s^][j1-][j2+]);
add(dp[s][j1][j2],dp[s^][j1][j2+]);
}
}
}
for (int j=;j<=n;j++)
add(ret,dp[s][j][j]);
printf("%d\n",ret);
}
return ;
}

HDU 5617 DP的更多相关文章

  1. hdu 3016 dp+线段树

    Man Down Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  2. HDU 5928 DP 凸包graham

    给出点集,和不大于L长的绳子,问能包裹住的最多点数. 考虑每个点都作为左下角的起点跑一遍极角序求凸包,求的过程中用DP记录当前以j为当前末端为结束的的最小长度,其中一维作为背包的是凸包内侧点的数量.也 ...

  3. HDU 5617 Jam's maze dp+滚动数组

    题目链接: hdu: http://acm.hdu.edu.cn/showproblem.php?pid=5617 bc(中文):http://bestcoder.hdu.edu.cn/contest ...

  4. HDU 5617 Jam's maze 巧妙DP

    题意:给你一个字符矩阵,从(1,1)到(n,n)有很多种走法,每一种走法形成一个字符串,问有多少种走法形成的字符串是回文的 分析:(粘贴BC题解) 的是回文串,有人会想到后缀数组自动机马拉车什么的,其 ...

  5. HDU 1069 dp最长递增子序列

    B - Monkey and Banana Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I6 ...

  6. HDU 1160 DP最长子序列

    G - FatMouse's Speed Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64 ...

  7. hdu 4826(dp + 记忆化搜索)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4826 思路:dp[x][y][d]表示从方向到达点(x,y)所能得到的最大值,然后就是记忆化了. #i ...

  8. HDU 2861 (DP+打表)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2861 题目大意:n个位置,m个人,分成k段,统计分法.S(n)=∑nk=0CknFibonacci(k ...

  9. HDU 2838 (DP+树状数组维护带权排序)

    Reference: http://blog.csdn.net/me4546/article/details/6333225 题目链接: http://acm.hdu.edu.cn/showprobl ...

随机推荐

  1. PHP解耦的三重境界(浅谈服务容器)

    阅读本文之前你需要掌握:PHP语法,面向对象 在完成整个软件项目开发的过程中,有时需要多人合作,有时也可以自己独立完成,不管是哪一种,随着代码量上升,写着写着就"失控"了,渐渐&q ...

  2. Objective-C日记-之NSPredicate

    谓语:NSPredicate 1,概述: 用于设置指定的过滤器的条件,通俗的理解就是设置选择的条件,再对指定的对象应用这个条件 2,用法: a,首先设置谓语. NSPredicate *predica ...

  3. wemall app商城源码Android中ViewHolder详细解释

    1.ViewHolder的解释: (1).只是一个静态类,不是Android的API方法. (2).它的作用就在于减少不必要的调用findViewById,然后把对底下的控件引用存在ViewHolde ...

  4. 扩大按钮 btn 响应区域

    方法一:类别 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c91b13 } p.p2 { margin: 0 ...

  5. 基于Spring-WS的Restful API的集成测试

    在很多Java企业级应用中,Spring占据了非常重要的位置,这就导致了基本上的技术选型都是围绕着Spring来, 比方说笔者最近的项目需要开发一个Restful的API接口,选型的时候就说,客户架构 ...

  6. Oracle-操作

    登录PL_SQL,输入用户名sys 密码 安装时输入的密码,选择 sysdba 打开plsqldev.exe所在目录下的PlugIns文件夹,如果没有请从其它地方拷入 打开运行命令窗口,输入命令 re ...

  7. ubuntu Error mounting /dev/sda6 at /media/xxx...

    问题原因:可能是windows没有完全关机,详细请看我的另一博文: http://www.cnblogs.com/ediszhao/p/3794459.html 为了学习linux我装了双系统,因为我 ...

  8. PDO(20161107)

    PDO MySQLI是针对MySQL数据库扩展的,是专门访问MySQL数据库的 PDO是一个数据库访问的一个扩展类,通过一个类访问多个数据库,就是一个数据访问抽象层,把类结合在一块了 可以访问别的数据 ...

  9. React 进修之路(2)

    生命周期 React中的组件被看成是一个有生命的个体,因此赋予了声明周期的概念,就是为了定义组件所处的状态 React中组件共分三大周期,11个阶段 创建期(少年,成长)组件创建时候进入的时期 get ...

  10. 分享一些自己写的前端库,并骗骗 star(库都是在实际项目中大量运用过的)

    最近一两年在一些项目上,通过实际需求出发,编写了一些库在项目中使用,现在将这些项目都稍微整理了一下开源了出来,也许也有刚好能够你也用得上的,顺便也骗一下star.均在项目的README中加了相关的说明 ...