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相关推荐

  1. ICPC训练联盟2021寒假冬令营(6)_2021.01.25_笔记

    文章目录 试题链接 学习笔记 - C++ STL 简介 STL容器实验 序列式容器 关联式容器 集合容器 A - The Blocks Problem (POJ 1208, UVA 101) 中文释义 ...

  2. 提取了下刘汝佳推荐的题号...

    今天闲来没事上uva oj提取了下刘汝佳推荐的acm题号,原始数据如下: Volume 0. Getting Started    10055 - Hashmat the Brave Warrior ...

  3. 初学者acm的练习题指南

    上机练习题参考题 忘了在哪找的啦~~希望对大家有帮助呦 <!--[if !supportLists]-->1.    <!--[endif]-->Programming Bas ...

  4. PC/UVA 110207/10258

    uva上面题的的输入输出格式 各种怪 晚几天会整理下 放上. 2.8.7比赛记分板 输入 :第一行为一个整数  表示测试数据的组数,接下来一行空行.以后每两组测试数据之间一组空行隔开(各组数据的多少不 ...

  5. uva 10256 The Great Divide (Convex Hull, Simple)

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=14&page=sh ...

  6. 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 ...

  7. the blocks problem(uva 101 or poj 1208)

    题目描述见:uva 101 or poj 1208 关键在于彻底理解题目中搬积木的几个命令的含义,见具体分析 如果还不能理解题意,那么找一个正确通过的代码,编译并输入测试数据,查看其每一个命令的执行情 ...

  8. uva 11275 3D Triangles (3D-Geometry)

    uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem= ...

  9. UVa 207 - PGA Tour Prize Money

    时间限制:3.000秒 题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&catego ...

最新文章

  1. Python中的元编程:一个关于修饰器和元类的简单教程
  2. 图片滤镜算法原理简单讲解
  3. 博图读取温度的指令_1200读取温度巡检仪 16路
  4. Python之旅:列表
  5. 论java之反射机制,访问类中私有变量,调用私有方法
  6. Java异常简单介绍
  7. SpringCloud中文社区转型Spring4All欢迎您的加入
  8. ICCV2019 Workshop—VisDrone2019 Challenge 无人机视觉挑战赛
  9. Linux-文件和目录操作命令
  10. 量学云讲堂加密视频提取翻录为mp4工具使用教程
  11. computeshader实现全局光照
  12. SAP那些事-理论篇-5-SAP玩你还是你玩SAP
  13. java messagedigest_Java MessageDigest.getInstance返回的实例非线程安全
  14. 如何用html放音乐播放器,如何用html+js实现音乐歌词同步播放器
  15. 计算机网络VLAN间路由,交换机必学知识 VLAN间路由理论指导
  16. Wordpress出现503 Service Temporarily Unavailable
  17. “Project1.exe”(Win32): 已加载“C:\Windows\syswow64\ntdll.dll”。无法查找或打开 PDB 文件。 “Project1.exe”(Win32): 已加载
  18. CSS + HTML导航栏效果
  19. Friedman test 和 Bonferroni-Dunn test 整理
  20. gitlab拉取项目报128 fatal: unable to access ‘xxx.git/‘

热门文章

  1. Centos系统中彻底删除Mysql数据库
  2. 基本HTTP协议流程是什么?
  3. java合集框架第一天
  4. 【代码笔记】iOS-浮动的云
  5. Linux下Tomcat的启动、关闭
  6. 软件测试自动化的成功经验
  7. WinAPI: GetLogicalDrives - 判断系统中存在的逻辑驱动器
  8. 涨知识!外贸中,船公司S/O(订舱单)文件英文解释!
  9. 【pmcaff】挖掘产品痛点的神器:用户角色模型
  10. 《Linux内核原理与分析》第三周作业