格子游戏  解题报告

v 【问题描述】
v   Alice和Bob玩了一个古老的游戏:首先画一个n * n的点阵(下图n = 3)   接着,他们两个轮流在相邻的点之间画上红边和蓝边:
v
v
v
v     直到围成一个封闭的圈(面积不必为1)为止,“封圈”的那个人就是赢家。因为棋盘实在是太大了(n<= 200),他们的游戏实在是太长了!他们甚至在游戏中都不知道谁赢得了游戏。于是请你写一个程序,帮助他们计算他们是否结束了游戏?
v 【输入格式】
v   输入数据第一行为两个整数n和m。m表示一共画了m条线。以后m行,每行首先有两个数字(x,y),代表了画线的起点坐标,接着用空格隔开一个字符,假如字符是"D ",则是向下连一条边,如果是"R"就是向右连一条边。输入数据不会有重复的边且保证正确。
v 【输出格式】
v   输出一行:在第几步的时候结束。假如m步之后也没有结束,则输出一行“draw”。
v 【输入样例】
v   3 5
v   1 1 D
v   1 1 R
v   1 2 D
v   2 1 R
v   2 2 D
v 【输出样例】
v   4

【解题思路】

这道题让我学会了用结构体实现二维的并查集。其实也并不是很难,在每一次比较的时候只需要把x和y都比较一下就可以了;

每一次划线,先判断一下,如果起点在集合里,终点也在集合里,那么符合条件,输出当时的步数就可以了;如果不符合上面的条件,把点入集合;如果到最后还没有符合条件的情况,输出draw就可以了。

【代码】

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
struct hp{int x,y;
}n1,n2,f[250][250];
int n,m,i,p,q,j;
char t;hp find(hp k)
{if (k.x==f[k.x][k.y].x&&k.y==f[k.x][k.y].y) return k;f[k.x][k.y]=find(f[k.x][k.y]);return f[k.x][k.y];
}int main()
{freopen("game.in","r",stdin);freopen("game.out","w",stdout);cin>>n>>m;for (i=1;i<=n;++i)for (j=1;j<=n;++j){f[i][j].x=i;f[i][j].y=j;}for (i=1;i<=m;++i){scanf("%d%d",&p,&q);cin>>t;if (t=='D'){n1=find(f[p][q]);n2=find(f[p+1][q]);}if (t=='R'){n1=find(f[p][q]);n2=find(f[p][q+1]);}if (n1.x==n2.x&&n1.y==n2.y){printf("%d",i);return 0;}elsef[n1.x][n1.y]=n2;}printf("draw");return 0;
}

格子游戏 解题报告相关推荐

  1. 纵横填字游戏解题报告

    题意描述: [问题描述] 这个题目要求你编写一个程序来解决一个纵横填字游戏. 这个游戏比我们在报纸上见到的通常的填字游戏要简单.游戏仅给出单词的起始位置,方面(横向或纵向)以及单词的长度.只要单词的长 ...

  2. 洛谷 P1129 [ZJOI2007]矩阵游戏 解题报告

    P1129 [ZJOI2007]矩阵游戏 题目描述 小\(Q\)是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个\(N*N\)黑白方阵进行(如同国际象棋一般 ...

  3. OPJ-1067 取石子游戏 解题报告(数论) 取石子游戏,betty定理

    连接--A - 取石子游戏 Time Limit:1000MS    Memory Limit:10000KB    64bit IO Format:%I64d & %I64u Descrip ...

  4. [LeetCode解题报告] LCP 49. 环形闯关游戏

    [LeetCode解题报告] LCP 49. 环形闯关游戏 一. 题目 1. 题目描述 2. 原题链接 二. 解题报告 1. 思路分析 2. 复杂度分析 3. 代码实现 三. 本题小结 四. 参考链接 ...

  5. noip2010乌龟棋解题报告

    乌龟棋解题报告 题目描述 Description 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一 的起点,第N格是终点, ...

  6. [zz][ZOJ Monthly]October 2008解题报告

    Connect4 Connect Four(Author: SONG, Yu[EZdestroyer]) 题目的背景就是Linux下的同名游戏,两个人在7*7的槽里轮流扔棋子,每次棋子都扔进某一列,棋 ...

  7. NJU 2021 计算机拔尖(数学)测试 解题报告

    NJU 2021 计算机拔尖(数学)测试 解题报告 试题链接, 万分感谢 Fiddie 大佬提供试题!!! 因为要准备 2022 计算机拔尖所以稍微写了一下,感觉难度很大. 1 题目 设自然数 n&g ...

  8. 2015 CQU 重庆大学程序设计竞赛 解题报告

    前言 儿童节快乐~~ 啊对了首先想带标程回家看的可以来这里:教主大大标程包 /我的现场赛代码 在校赛这样三人组队两台电脑的环境下,单挑的压力着实是十分之大--毕竟在同等条件下别人手速只要超过自己的一半 ...

  9. 快手2020校园招聘秋招笔试--算法C试卷 练习 解题报告 Apare_xzc

    快手2020校园招聘秋招笔试–算法C试卷 解题报告 Apare_xzc 2020/4/10 网页链接:牛客链接 题型分布: 选择题(2分/道*20道)         编程题(15分/道*4道) 选择 ...

最新文章

  1. NanoPi NEO Air使用十五:使用V4L2驱动USB摄像头
  2. 制作网站设计项目进度表让用户充分了解网站制作进程
  3. 计算机辅助园林设计ps,计算机辅助园林设计III
  4. redis集群部署一直卡在Waiting for the cluster to join ......
  5. JQuery 总结(1) 选择器的使用
  6. Django设置TIME_ZONE和LANGUAGE_CODE为中国区域
  7. mapgis转arcgis数据后发现属性表内没有数据
  8. GIT文件的三种状态
  9. 文件服务器 之 VSFTPD的高手篇
  10. 安装svn显示目标计算机积极拒绝_【SVN】Error running context: 由于目标计算机积极拒绝,无法连接...
  11. getTickCount()函数 区别GetTickCount()函数
  12. uefi legacy linux知乎,【U盘工具】制作纯净万能“便携系统+pe维护”双系统U盘——UEFI与Legacy双启动...
  13. win下hadoop配置环境后cmd中报错
  14. 虚拟拨号服务器怎么用,windows实现虚拟拨号服务器
  15. 面试现场:小伙伴美团一面的分享和分析[含答案]
  16. Flask框架(一)flak视图和URL
  17. [RK3288][Android6.0] 调试笔记 --- CPU使用的频率表
  18. VS Code修改系统界面和编辑面板字体大小
  19. Java小白入门200例98之Java异常
  20. 022 Rust死灵书之污染

热门文章

  1. C++stringstream的妙用
  2. Android(java)学习笔记192:ContentProvider使用之虚拟短信
  3. MySQL语句练习50题
  4. node实现文件分片上传之multer篇
  5. chrome应用开发API之chrome.fileSystem
  6. 乐影音下载器(视频下载器) 官方主页
  7. 原生input标签实现ajax单文件上传和多文件上传
  8. 虎头钳的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  9. 计算机word的关闭怎么办,电脑自动关机,WORD文档没保存怎么办?
  10. 简单记录 html2canvas网页中的图片无法显示的问题