UVA 141 The Spot Game
UVA_141
由于一开始审题的问题,导致WA个不停,以后一定要加强审题!
首先,棋盘是N*N的,不是4*4的。其次,在判断这个状态是否出现过时,要分别判断3种情况,但存储状态的时候只存储1种情况。
#include<stdio.h>#include<string.h>int head[100007],next[1100];int st[440][250],dis[110],temp[50][50],N;char flag[5];int hash(int *A){int i,v=0;for(i=0;i<N*N;i++) v=((v<<1)+A[i])%100007;return v;}void insert(int s){int i,h; h=hash(st[s]); next[s]=head[h]; head[h]=s;}int search(int s){int i,h; h=hash(st[s]);for(i=head[h];i!=-1;i=next[i])if(memcmp(st[i],st[s],sizeof(st[i]))==0)break;if(i==-1)return 0;elsereturn 1;}int main(){int i,j,k,t,a,b,front,rear,ans;while(1) { scanf("%d",&N);if(N==0)break; ans=0; memset(head,-1,sizeof(head)); memset(st[0],0,sizeof(st[0])); front=rear=0; dis[rear]=0; insert(rear); rear++;for(t=0;t<2*N;t++) { scanf("%d%d%s",&a,&b,flag); a--; b--;if(!ans) { memcpy(st[rear],st[front],sizeof(st[rear]));if(flag[0]=='+') st[rear][a*N+b]=1;else st[rear][a*N+b]=0; dis[rear]=dis[front]+1; front=rear;if(search(front)) { ans=(t+1)%2+1;continue; }else rear++;for(k=0;k<N*N;k++) { i=k/N; j=k%N; temp[i][j]=st[front][k]; } k=0;for(j=0;j<N;j++)for(i=N-1;i>=0;i--) st[rear][k++]=temp[i][j];if(search(rear)) { ans=(t+1)%2+1;continue; } k=0;for(j=N-1;j>=0;j--)for(i=0;i<N;i++) st[rear][k++]=temp[i][j];if(search(rear)) { ans=(t+1)%2+1;continue; } k=0;for(i=N-1;i>=0;i--)for(j=N-1;j>=0;j--) st[rear][k++]=temp[i][j];if(search(rear)) { ans=(t+1)%2+1;continue; } insert(front); } }if(ans==0) printf("Draw\n");else printf("Player %d wins on move %d\n",ans,dis[front]); }return 0;}
UVA 141 The Spot Game相关推荐
- ICPC训练联盟2021寒假冬令营(6)_2021.01.25_笔记
文章目录 试题链接 学习笔记 - C++ STL 简介 STL容器实验 序列式容器 关联式容器 集合容器 A - The Blocks Problem (POJ 1208, UVA 101) 中文释义 ...
- 提取了下刘汝佳推荐的题号...
今天闲来没事上uva oj提取了下刘汝佳推荐的acm题号,原始数据如下: Volume 0. Getting Started 10055 - Hashmat the Brave Warrior ...
- 初学者acm的练习题指南
上机练习题参考题 忘了在哪找的啦~~希望对大家有帮助呦 <!--[if !supportLists]-->1. <!--[endif]-->Programming Bas ...
- PC/UVA 110207/10258
uva上面题的的输入输出格式 各种怪 晚几天会整理下 放上. 2.8.7比赛记分板 输入 :第一行为一个整数 表示测试数据的组数,接下来一行空行.以后每两组测试数据之间一组空行隔开(各组数据的多少不 ...
- uva 10256 The Great Divide (Convex Hull, Simple)
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=14&page=sh ...
- POJ 3525/UVA 1396 Most Distant Point from the Sea(二分+半平面交)
Description The main land of Japan called Honshu is an island surrounded by the sea. In such an isla ...
- the blocks problem(uva 101 or poj 1208)
题目描述见:uva 101 or poj 1208 关键在于彻底理解题目中搬积木的几个命令的含义,见具体分析 如果还不能理解题意,那么找一个正确通过的代码,编译并输入测试数据,查看其每一个命令的执行情 ...
- uva 11275 3D Triangles (3D-Geometry)
uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem= ...
- UVa 207 - PGA Tour Prize Money
时间限制:3.000秒 题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&catego ...
最新文章
- Python中的元编程:一个关于修饰器和元类的简单教程
- 图片滤镜算法原理简单讲解
- 博图读取温度的指令_1200读取温度巡检仪 16路
- Python之旅:列表
- 论java之反射机制,访问类中私有变量,调用私有方法
- Java异常简单介绍
- SpringCloud中文社区转型Spring4All欢迎您的加入
- ICCV2019 Workshop—VisDrone2019 Challenge 无人机视觉挑战赛
- Linux-文件和目录操作命令
- 量学云讲堂加密视频提取翻录为mp4工具使用教程
- computeshader实现全局光照
- SAP那些事-理论篇-5-SAP玩你还是你玩SAP
- java messagedigest_Java MessageDigest.getInstance返回的实例非线程安全
- 如何用html放音乐播放器,如何用html+js实现音乐歌词同步播放器
- 计算机网络VLAN间路由,交换机必学知识 VLAN间路由理论指导
- Wordpress出现503 Service Temporarily Unavailable
- “Project1.exe”(Win32): 已加载“C:\Windows\syswow64\ntdll.dll”。无法查找或打开 PDB 文件。 “Project1.exe”(Win32): 已加载
- CSS + HTML导航栏效果
- Friedman test 和 Bonferroni-Dunn test 整理
- gitlab拉取项目报128 fatal: unable to access ‘xxx.git/‘