hdu4558 仙剑奇缘
来源:互联网 发布:软件项目经理问题答案 编辑:程序博客网 时间:2024/04/29 06:02
中文题,不解释
http://acm.hdu.edu.cn/showproblem.php?pid=4558
#include<stdio.h>#include<iostream>using namespace std;int dp0[480][480][11]={0},dp1[480][480][11]={0};int a[480][480]={0};int main(){ int t; int i,j,k,r; int m,n,s; char b[500]; while(scanf("%d",&t)!=EOF) { for(i=1;i<=t;i++) { s=0; scanf("%d%d",&n,&m); for(j=1;j<=n;j++) { scanf("%s",b); for(k=1;k<=m;k++) { a[j][k]=b[k-1]-'0'; } } memset(dp0,0,sizeof(dp0)); memset(dp1,0,sizeof(dp1)); for(j=1;j<=n;j++) for(k=1;k<=m;k++) { dp0[j][k][a[j][k]]=1; for(r=0;r<=10;r++) { dp0[j][k][r]+=(dp1[j-1][k][(r-a[j][k]+11)%11]+dp1[j][k-1][(r-a[j][k]+11)%11])%1000000007; dp1[j][k][r]+=(dp0[j-1][k][(r+a[j][k])%11]+dp0[j][k-1][(r+a[j][k])%11])%1000000007; if(r==0) { s+=(dp0[j][k][r]%1000000007+dp1[j][k][r]%1000000007)%1000000007; } s=s%1000000007; } } printf("Case %d: %d\n",i,s); } } return 0;}