• L


    题目链接:

    L - Tic-Tac-Toe

     FZU - 2283 

    题目大意:两个人下棋,一共是三步棋,第一个人下一步,第二个人下一步,第三个人下一步,然后问你在两个人在都足够聪明的条件下,第一个人能否获胜?(获胜的前提,其中一个人的三个棋子连成了一条线)。

     参考博客:

    Tic-Tac-Toe FZU - 2283 (暴力) - CSDN博客

    具体思路:首先必胜态一共有两种情况,一行一共有三个,存在一行有两个是第一个人的棋子,另外一个是空格,这种情况下第一个人必胜。

    第二个情况,存在相交的两行,这两行都满足有一个是第一个人的棋子,剩余的两个为空格,这样也是满足的。

    AC代码:

      1 #include<iostream>
      2 #include<string>
      3 #include<stdio.h>
      4 using namespace std;
      5 # define ll long long
      6 # define inf 0x3f3f3f3f
      7 const int maxn =2e5+100;
      8 char a[5][5];
      9 char u;
     10 bool judge(int x,int y)
     11 {
     12     int flag1=0,flag2=0;
     13     int t1=0, t2=0;
     14     for(int i=1; i<=3; i++)
     15     {
     16         if(a[x][i]=='.')
     17             t1++;
     18         if(a[x][i]==u)
     19             t2++;
     20     }
     21     if(t1==1&&t2==2)
     22         flag1++;
     23     if(t1==2&&t2==1)
     24         flag2++;
     25     t1=0,t2=0;
     26     for(int i=1; i<=3; i++)
     27     {
     28         if(a[i][y]=='.')
     29             t1++;
     30         if(a[i][y]==u)
     31             t2++;
     32     }
     33     if(t1==1&&t2==2)
     34         flag1++;
     35     if(t1==2&&t2==1)
     36         flag2++;
     37     if(x==y)
     38     {
     39         t1=0,t2=0;
     40         for(int i=1; i<=3; i++)
     41         {
     42             if(a[i][i]=='.')
     43                 t1++;
     44             if(a[i][i]==u)
     45                 t2++;
     46         }
     47         if(t1==1&&t2==2)
     48             flag1++;
     49         if(t1==2&&t2==1)
     50             flag2++;
     51     }
     52     if(x+y==4)
     53     {
     54         t1=0,t2=0;
     55         for(int i=1; i<=3; i++)
     56         {
     57             if(a[i][3+1-i]=='.')
     58                 t1++;
     59             if(a[i][4-i]==u)
     60                 t2++;
     61         }
     62         if(t1==1&&t2==2)
     63             flag1++;
     64         if(t1==2&&t2==1)
     65             flag2++;
     66     }
     67     return flag1>=1|| flag2>=2;
     68 }
     69 int main()
     70 {
     71     int T;
     72     scanf("%d",&T);
     73     while(T--)
     74     {
     75         for(int i=1; i<=3; i++)
     76         {
     77             for(int j=1; j<=3; j++)
     78             {
     79                 scanf(" %c",&a[i][j]);
     80             }
     81         }
     82         int flag=0;
     83         scanf(" %c",&u);
     84         for(int i=1; i<=3; i++)
     85         {
     86             for(int j=1; j<=3; j++)
     87             {
     88                 if(judge(i,j))
     89                 {
     90                     flag=1;
     91                     break;
     92                 }
     93             }
     94             if(flag)
     95                 break;
     96         }
     97         if(flag)
     98             printf("Kim win!
    ");
     99         else
    100             printf("Cannot win!
    ");
    101     }
    102     return 0;
    103 }
  • 相关阅读:
    类实现接口(Example5_11)
    PyTorch之Checkpoint机制解析
    PyTorch之BN核心参数详解
    PyTorch之分布式操作Barrier
    PyTorch之对类别张量进行onehot编码
    PyTorch之具体显存占用分析
    Pytorch之SpatialShiftOperation的5种实现策略
    无密码远程桌面设置
    人生三个境界
    研华工控机设置上电自启动
  • 原文地址:https://www.cnblogs.com/letlifestop/p/10697026.html
Copyright © 2020-2023  润新知