2019-8-25

这道题一直在WA,没有通过,先占个坑,日后再改。

附WA代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
char a[10][10];
int black[65];
int white[65];
char c,myplayer;
int n,i,j,bi,wi;
char s[5];
int canset[65];
int id;
//左右上下   左上 左下 右上 右下
int dir[8][2]={{0,-1},{0,1},{-1,0},{1,0},{-1,-1},{1,-1},{-1,1},{1,1}};
int book[9][9];
char player[2];
void tongji();
void operate();
int main()
{player[0]='W';player[1]='B';cin>>n;getchar();memset(a,0,sizeof(a));for(int w=0;w<n;w++){for(i=1;i<=8;i++){j=1;while((c=getchar())!='\n'){a[i][j++]=c;}}cin>>myplayer;if(myplayer=='W'){id=0;}else {id=1;}while(cin>>s){if(!strcmp(s,"Q")){for(i=1;i<=8;i++){for(j=1;j<=8;j++){cout<<a[i][j];}cout<<endl;}if(w!=n-1){cout<<endl;}break;}else{operate();}}getchar();}return 0;
}
void tongji()
{memset(white,0,sizeof(white));memset(black,0,sizeof(black));wi=0;bi=0;for(int x1=1;x1<=8;x1++)for(int x2=1;x2<=8;x2++){if(a[x1][x2]=='W'){white[wi++]=(x1-1)*8+x2;}if(a[x1][x2]=='B'){black[bi++]=(x1-1)*8+x2;}}
}
void operate()
{int newx,newy;int setx,sety;int d;int tim;int num=0;int flag;int numblack;int numwhite;int var;memset(canset,0,sizeof(canset));memset(book,0,sizeof(book));d=0;tongji();for(int k=0;;k++){if(id==0){var=white[k];}else {var=black[k];}if(var==0){break;}for(int b=0;b<8;b++){tim=0;newx=(var-1)/8+1;newy=var-8*(newx-1);while(1){newx=newx+dir[b][0];newy=newy+dir[b][1];tim++;if(newx<=0||newx>=9||newy<=0||newy>=9){break;}if(book[newx][newy]){break;}if(a[newx][newy]==player[id]||((a[newx][newy]=='-')&&tim==1)){break;}else if((a[newx][newy]=='-')){canset[d++]=(newx-1)*8+newy;book[newx][newy]=1;break;}}}}if(!strcmp(s,"L")){if(d==0){cout<<"No legal move."<<endl;}else{sort(canset,canset+65);for(int e=0;;e++){if(canset[e]!=0){num++;if(num==1){cout<<"("<<((canset[e]-1)/8+1)<<","<<(canset[e]-((canset[e]-1)/8)*8)<<")";}else{cout<<" ("<<((canset[e]-1)/8+1)<<","<<(canset[e]-((canset[e]-1)/8)*8)<<")";}}if(num==d){break;}}cout<<endl;}}else if(s[0]=='M'){setx=s[1]-'0';sety=s[2]-'0';if(!book[setx][sety]){id=1-id;}a[setx][sety]=player[id];for(int b=0;b<8;b++){tim=0;flag=0;newx=setx;newy=sety;while(1){newx=newx+dir[b][0];newy=newy+dir[b][1];tim++;if(newx<=0||newx>=9||newy<=0||newy>=9){break;}if(a[newx][newy]=='-'&&tim==1){break;}if(a[newx][newy]==player[id]){flag=1;break;}}if(flag==1){newx=setx;newy=sety;while(1){newx=newx+dir[b][0];newy=newy+dir[b][1];if(newx<=0||newx>=9||newy<=0||newy>=9){break;}if(a[newx][newy]==player[id]){break;}else{a[newx][newy]=player[id];}}}}id=1-id;numblack=0;numwhite=0;for(int ma=1;ma<=8;ma++)for(int col=1;col<=8;col++){if(a[ma][col]=='B'){numblack++;}if(a[ma][col]=='W'){numwhite++;}}printf("Black -%3d White -%3d\n",numblack,numwhite);}
}

习题4-3 UVA220黑白棋(WA)相关推荐

  1. UVA220 黑白棋 Othello

    题目 你的任务是模拟黑白棋游戏的进程.黑白棋的规则为:黑白双方轮流放棋子,每次必 须让新放的棋子"夹住"至少一枚对方棋子,然后把所有被新放棋子"夹住"的对方棋子 ...

  2. UVa220黑白棋问题

    黑白棋问题 原英文题意. 题意翻译 你的任务是模拟黑白棋游戏的进程.黑白棋的规则为:黑白双方轮流放棋子,每次必 须让新放的棋子"夹住"至少一枚对方棋子,然后把所有被新放棋子&quo ...

  3. UVA220黑白棋题目详解

    题目直通车 UVA220 题目大意 黑白翻转棋游戏,棋子落子的位置必须是能和同色棋包住异色棋的位置,放好后被包住的异色棋要进行翻转,翻转成同色棋.需要对三种指令进行处理. L:打印所有合法操作,按照从 ...

  4. ACM篇:UVA220黑白棋总结

    很纯粹的模拟. 需要注意的是输出格式,比如最后一个(i,j)后没有空格,最后一场棋后也无回车,以及输出棋子数量时数字占两位. 简单思路. LIST:遍历棋盘,每个点单独判断八个方向是否有同色棋子,有即 ...

  5. 《算法竞赛入门经典》习题4-3 黑白棋(Othello, ACM、ICPC World Finals 1992, UVa220)

    原题及翻译 Othello is a game played by two people on an 8 x 8 board, using disks that are white on one si ...

  6. C++ 黑白棋游戏的实现

    时光荏苒..眨眼间半年过去了.半年间我的人生轨迹经历了重大的改变.我最终还是决定把我在去年暑假里实现的这个C++的黑白棋游戏发布在我的CSDN博客上.这或许是我写的最后一个C++程序了. 记得当时,7 ...

  7. P3084 黑白棋游戏

      P3084 黑白棋游戏 时间: 1000ms / 空间: 65536KiB / Java类名: Main 描述 黑白棋游戏的棋盘由4×4方格阵列构成.棋盘的每一方格中放有1枚棋子,共有8枚白棋子和 ...

  8. 51nod 1368:黑白棋 二分图最大匹配

    1368 黑白棋 题目来源: TopCoder 基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题  收藏  取消关注 有一个N*M的棋盘(1<=N,M< ...

  9. android 双人黑白棋开发博客,黑白棋 - 软件资讯 - 课堂党年级博客

    黑白棋叫反棋(Reversi).奥赛罗棋(Othello)苹棋翻转棋黑白棋西本流行游戏通相互翻转棋棋盘谁棋判断胜负 黑白棋棋盘8*8格棋盘棋棋空格间像围棋交叉点始棋盘两白两黑四棋交叉放置黑棋总先 自颜 ...

最新文章

  1. iOS开源项目周报0316
  2. 中职学校计算机专业的论文,中职计算机论文范文2篇
  3. 自然语言12_Tokenizing Words and Sentences with NLTK
  4. android 文字fly动画,超好看的下拉刷新动画Android代码实现
  5. AX 2009 界面伸缩功能
  6. 2019-03-28 SQL Server Pivot
  7. appium定位元素java篇【转】
  8. 第23天:js-数据类型转换
  9. 又是一年秋来到,学习要趁早,Power BI Desktop8月更新又来了
  10. 微软开源 TensorFlow-DirectML,为 WSL2 提供 GPU 支持
  11. 一次多线程臭虫经验——异步日志c++化时
  12. linux su命令位置,Linux命令大全su详解
  13. vue报错RangeError: Maximum call stack size exceeded
  14. 扩散方程——热传导问题(能量定律+傅里叶热传导定律)+ 拉普拉斯方程 | 偏微分方程(三)
  15. 高考数学试题等差数列及其前n项和解题思维|附习题
  16. java liferay,用一个简单的Java code获取当前用户的Liferay
  17. Linux:安装AnyConnect客户端教程
  18. Ubuntu 18.04安装GPGPU-Sim,运行ispass-2009 benchmarks
  19. 【敏捷2.3】极限编程XP的关键实践(一)
  20. Linux下安装JDK教程,老爷爷看了都说会了!

热门文章

  1. 暗影精灵dns服务器未响应,惠普WASD暗影精灵实战中土世界暗影魔多
  2. js同步等待ajax结果返回
  3. 解决winscp中普通用户无法上传、删除、移动文件
  4. git与svn的区别面试
  5. iOS组件化及架构设计
  6. ZigBee室内定位方案的优势在哪里,该技术可靠吗-新导智能
  7. kingscada检测服务器状态,组态王隧道监控解决方案(KingSCADA).ppt
  8. 什么是站群服务器?站群服务器与普通服务器的区别,为什么站长都爱用站群服务器
  9. java编程软件教程_Java编程软件图文版教程,快来看看吧
  10. 阿里云 mysql教程_mysql数据库菜鸟教程