hdu3368DFS
来源:互联网 发布:如何查看本机端口号 编辑:程序博客网 时间:2024/06/05 03:45
#include <iostream>#include <cstdio>using namespace std;char s[10][10];int dir[8][2]={{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1},{1,0},{1,1}};void dfs(int x,int y,int d,int num,int &sum){ if(d==8) { for(int i=0;i<8;i++) dfs(x+dir[i][0],y+dir[i][1],i,num,sum); } else { if(s[x][y]=='*') return; if(s[x][y]=='D') sum+=num; if(s[x][y]=='L') dfs(x+dir[d][0],y+dir[d][1],d,num+1,sum); }}int solve(){ int sum,Max=0; for(int i=0;i<8;i++) for(int j=0;j<8;j++) { sum=0; if(s[i][j]=='*'){ dfs(i,j,8,0,sum); if(sum>Max) Max=sum; } } return Max;}int main(){ int t,i,ans,cas=1; scanf("%d",&t); while(t--) { for(i=0;i<8;i++) scanf("%s",s[i]); ans=solve(); printf("Case %d: %d\n",cas++,ans); } return 0;}