#include <cstdio>
#include <cstring>
#include <cmath>
const int INF=0x3fffffff;
typedef long long ll;
const int mod=5201314;
const int maxn=505;
int n,dp[2][maxn][maxn];
char val[maxn][maxn];
void add(int &x, int y){
x=(x+y)%mod;
}
void input(){
int i;
scanf("%d",&n);
for (i=1;i<=n;i++)
scanf("%s",val[i]+1);
}
void solve(){
int i,j,k,x1,x2,y1,y2;
dp[0][1][n]=(val[1][1]==val[n][n]);
k=1;
for(i=2;i<=n;i++){
memset(dp[k],0,sizeof(dp[k]));
for(x1=1;x1<=i;x1++)
for(x2=n;x2>=n-i+1;x2--){
y1=i-x1+1;
y2=2*n-x2-i+1;
if(val[x1][y1]!=val[x2][y2])
continue;
add(dp[k][x1][x2],dp[!k][x1][x2]);
add(dp[k][x1][x2],dp[!k][x1-1][x2]);
add(dp[k][x1][x2],dp[!k][x1][x2+1]);
add(dp[k][x1][x2],dp[!k][x1-1][x2+1]);
}
k=!k;
}
int ans=0;
for(i=1;i<=n;i++)
add(ans,dp[!k][i][i]);
printf("%d\n",ans);
}
int main(){
int t;
scanf("%d", &t);
while (t--){
input();
solve();
}
return 0;
}
Contest 2016-5-7 C(HDU 5617)
最新推荐文章于 2020-07-28 23:37:24 发布