1045-博弈

来源:互联网 发布:网页数据导出excel 编辑:程序博客网 时间:2024/05/12 16:51

2016暑期ACM学习
1045-黑白棋
url=http://acm.xidian.edu.cn/problem.php?id=1045&appkey=&title=&pic=&ralateUid=&language=zh_cn#_loginLayer_1475648650717)

#include<stdio.h>int c[6][6];int fi[5]={0,-1,1,0,0};int fj[5]={0,0,0,-1,1};bool can(int i,int j){    if(i<1||j<1||i>5||j>5||c[i][j])        return false;    return true;}bool dfs(int i,int j){    c[i][j]=1;    int ni,nj;    for(int k=1;k<5;k++)    {        ni=i+fi[k];        nj=j+fj[k];        if(can(ni,nj))        {            if(dfs(ni,nj))            {                c[i][j]=0;//如果先手会输则悔棋                 return false;            }        }    }    c[i][j]=0;//?不理解     return true;}int main(){    int T;    scanf("%d",&T);    while(T--)    {        bool flag=false;        for(int i=1;i<6;i++)            for(int j=1;j<6;j++)                scanf("%1d",&c[i][j]);        //第一步有多处可以下        for(int i=1;i<6;i++)        {             for(int j=1;j<6;j++)            {                 if(c[i][j]==0&&dfs(i,j))                {                     flag=true;                    break;                    }            }        }         if(flag)            printf("win\n");        else            printf("lose\n");    }    return 0;}
0 0