• 格子游戏


    格子游戏
    【问题描述】
      Alice和Bob玩了一个古老的游戏:首先画一个n * n的点阵(下图n = 3)   接着,他们两个轮流在相邻的点之间画上红边和蓝边:
     
     
     
        直到围成一个封闭的圈(面积不必为1)为止,“封圈”的那个人就是赢家。因为棋盘实在是太大了(n <= 200),他们的游戏实在是太长了!他们甚至在游戏中都不知道谁赢得了游戏。于是请你写一个程序,帮助他们计算他们是否结束了游戏?
    【输入格式】
      输入数据第一行为两个整数n和m。m表示一共画了m条线。以后m行,每行首先有两个数字(x, y),代表了画线的起点坐标,接着用空格隔开一个字符,假如字符是"D ",则是向下连一条边,如果是"R "就是向右连一条边。输入数据不会有重复的边且保证正确。
    【输出格式】
      输出一行:在第几步的时候结束。假如m步之后也没有结束,则输出一行“draw”。
    【输入样例】
      3 5
      1 1 D
      1 1 R
      1 2 D
      2 1 R
      2 2 D
    【输出样例】
      4
     1 #include<cstdio>
     2 #include<iostream>
     3 using namespace std;
     4 int n,m;
     5 char c;
     6 int a,b;
     7 struct node
     8 {
     9     int x,y;
    10 }far[500][500],k1,k2;
    11 node find(node k)
    12 {
    13     if((far[k.x][k.y].x==k.x)&&(far[k.x][k.y].y==k.y))return  k;
    14     far[k.x][k.y]=find(far[k.x][k.y]);
    15     return far[k.x][k.y];
    16 }
    17 int main()
    18 {
    19     freopen("game.in","r",stdin);
    20     freopen("game.out","w",stdout);
    21     scanf("%d%d",&n,&m);
    22     for(int i=1;i<=n;++i)
    23         for(int j=1;j<=n;++j)
    24         {
    25             far[i][j].x=i;far[i][j].y=j;
    26         }
    27     for(int i=1;i<=m;++i)
    28     {
    29         cin>>a>>b>>c;
    30         if(c=='D')
    31         {
    32             k1=find(far[a][b]);
    33             k2=find(far[a+1][b]);
    34         }
    35         if(c=='R')
    36         {
    37             k1=find(far[a][b]);
    38             k2=find(far[a][b+1]);
    39         }
    40         if(k1.x==k2.x&&k1.y==k2.y)
    41         {
    42             printf("%d
    ",i);return 0;
    43         }
    44         else far[k1.x][k1.y]=k2;
    45     }
    46     printf("draw");
    47     return 0;
    48 }
  • 相关阅读:
    怎么防止重复提交
    如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?
    什么是 JavaConfig?
    Spring Boot 有哪些优点?
    GBK和GB2312编码
    2.补充:计算机表示的单位:
    python中字符串的编码和解码
    Spring Boot 有哪些优点?
    Maven的工程类型有哪些?
    Maven仓库是什么
  • 原文地址:https://www.cnblogs.com/mjtcn/p/6700487.html
Copyright © 2020-2023  润新知