dfs ancient go

来源:互联网 发布:iphone蜂窝数据快捷键 编辑:程序博客网 时间:2024/05/22 06:32

http://acm.uestc.edu.cn/#/problem/show/1221

#include<iostream>#include<cstring>#include<cstdio>using namespace std;int vis[15][15],cnt;int d[4][2]={1,0,-1,0,0,1,0,-1};char s[15][15];void dfs(int x, int y){    if(s[x][y]=='.')    {        cnt++;        return;    }    for(int i=0;i<4;i++)    {        int a=x+d[i][0];        int b=y+d[i][1];        if(s[a][b]!='x'&&!vis[a][b]&&a>=1&&a<=9&&b>=1&&b<=9)        {            vis[a][b]=1;            dfs(a,b);        }    }}int main(){    int t;    cin>>t;    for(int cas=1;cas<=t;cas++)    {        for(int i=0;i<=10;i++)        for(int j=0;j<=10;j++)        s[i][j]='x';        for(int i=1;i<=9;i++)        for(int j=1;j<=9;j++)        cin>>s[i][j];        int flag=0;        for(int i=1;i<=9;i++)        {            for(int j=1;j<=9;j++)            {                if(s[i][j]=='o')                {                    memset(vis,0,sizeof(vis));                    cnt=0;                    dfs(i,j);                    if(cnt==1)//只有一个'.'时才满足                    {                        flag=1;                        break;                    }                }            }            if(flag) break;        }        if(flag) printf("Case #%d: Can kill in one move!!!\n", cas);        else printf("Case #%d: Can not kill in one move!!!\n", cas);    }    return 0;}
0 0
原创粉丝点击