UVa1589 - Xiangqi-程序员宅基地

//UVa1589 - Xiangqi
//WA
#include<iostream>
#include<string.h>
using namespace std;

typedef struct XYZ{
	char name;
	int x,y;
	XYZ(int x = 0, int y = 0):x(x),y(y){};
};
int qp[11][10];//qipan
char sq[11][10];//shaqi
XYZ RQ[8];//red qi

void G(int x, int y);//jiang
void R(int x, int y);//che
void H(int x, int y);//ma
void C(int x, int y);//pao
int BGgoing(int x, int y);

int main(){
	int RT;//red qi number
	XYZ BG;//black G
	while(cin>>RT>>BG.x>>BG.y){
		//��ʼ��������
		memset(qp,0,sizeof(qp));
		memset(sq,'A',sizeof(sq));
		//��¼����
		for(int i = 1; i <= RT; i++){
			cin>>RQ[i].name>>RQ[i].x>>RQ[i].y;
			qp[RQ[i].x][RQ[i].y] = (int)RQ[i].name;
		}
		//doing
		for(int i = 1; i <= RT; i++){
			if(RQ[i].name == 'G') G(RQ[i].x,RQ[i].y);
			if(RQ[i].name == 'R') R(RQ[i].x,RQ[i].y);
			if(RQ[i].name == 'H') H(RQ[i].x,RQ[i].y);
			if(RQ[i].name == 'C') C(RQ[i].x,RQ[i].y);
		}
		//ans out
		if(BGgoing(BG.x, BG.y)) cout<<"YES\n";
		else cout<<"NO\n";
		//qp out
		for(int i = 1; i <= 10; i++){
			for(int j = 1; j <= 9; j++)
				cout<<qp[i][j]<<" ";
			cout<<"\n";
		}
		continue;
	}
	return 0;
}

void G(int x, int y){
	for(int i = 1; i <= 10; i++)
		if(qp[i][y] != 0 && qp[i][y] != (int)'G')return ;
	for(int i = 1; i <= 10; i++)
		sq[i][y] = 'S';
}

void R(int x, int y){
	for(int i = x-1; i >= 1; i--){
		if(qp[i][y] == 0) sq[i][y] = 'S';
		else break;
	}
	for(int i = x+1; i <= 10; i++){
		if(qp[i][y] == 0) sq[i][y] = 'S';
		else break;
	}
	for(int i = y-1; i >= 1; i--){
		if(qp[x][i] == 0) sq[x][i] = 'S';
		else break;
	}
	for(int i = y+1; i <= 9; i++){
		if(qp[x][i] == 0) sq[x][i] = 'S';
		else break;
	}	
	return ;
}

void H(int x, int y){
	if(qp[x-1][y] == 0) sq[x-2][y+1] = 'S', sq[x-2][y-1] = 'S';
	if(qp[x+1][y] == 0) sq[x+2][y+1] = 'S', sq[x+2][y-1] = 'S';
	if(qp[x][y-1] == 0) sq[x+1][y-2] = 'S', sq[x-1][y-2] = 'S';
	if(qp[x][y+1] == 0) sq[x+1][y+2] = 'S', sq[x-1][y+2] = 'S';	
	return ;
}

void C(int x, int y){
	int is = 0;
	for(int i = x-1; i >= 1; i--){
		if(qp[i][y] != 0) {is++; continue;}
		if(is == 1) sq[i][y] = 'S';
		else if(is == 2){ sq[i][y] = 'S'; break;}
	}
	is = 0;
	for(int i = x+1; i <= 10; i++){
		if(qp[i][y] != 0) {is++; continue;}
		if(is == 1) sq[i][y] = 'S';
		else if(is == 2){ sq[i][y] = 'S'; break;}
	}
	is = 0;
	for(int i = y-1; i >= 1; i--){
		if(qp[x][i] != 0) {is++; continue;}
		if(is == 1) sq[x][i] = 'S';
		else if(is == 2){ sq[x][i] = 'S'; break;}
	}	
	is = 0;
	for(int i = y+1; i <= 9; i++){
		if(qp[x][i] != 0) {is++; continue;}
		if(is == 1) sq[x][i] = 'S';
		else if(is == 2){ sq[x][i] = 'S'; break;}
	}
	return ;
}

int BGgoing(int x, int y){
	int iss = 0;
	if(x-1>=1 && x-1<=3 && sq[x-1][y]=='S') iss++;
	if(x+1>=1 && x+1<=3 && sq[x+1][y]=='S') iss++;
	if(y-1>=4 && y-1<=6 && sq[x][y-1]=='S') iss++;
	if(y+1>=4 && y+1<=6 && sq[x][y+1]=='S') iss++;	
	if(iss) return 1;
	else return 0;
}

转载于:https://www.cnblogs.com/gwj1314/p/9444924.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30700977/article/details/96454908

智能推荐

FL Studio最新汉化免费下载 水果音乐制作软件-程序员宅基地

文章浏览阅读2.1k次,点赞3次,收藏4次。FL Studio水果音乐制作软件无疑是制作电子音乐首选,内置众多电子合成音色,只Styrus可以让人激动许久,加之Harmless和Harmor两款重量级合成音色,让电子音色有更多选择,更多个性十足的效果器插件如Grossbeat、Pitcher、Newtone、Vocodex可以做出充满个性的节奏、人声效果,同时支持LOOP拼接等。1、矢量界面FL Studio 100?量化,更好地用在4K、5K甚至8K显示器上,并保持锐利9 Mixer(混音器)。一完全重新设计混音器,动态缩放,具有6种布局风格

pythonxy安装包_Python计算机视觉:安装-程序员宅基地

文章浏览阅读643次。为顺利帮助读者完成本书中实例的学习,译者已对代码做了相应整理,下面给出在对本书实例学习前,你需要做的前期安装工作。注意,下面译者给出的安装过程是针对Windows下的,其他平台如Linux、Mac请查阅中译本附录。0.1 需要准备的安装包要完整复现书中的实例,你需要的主要四个文件包括Python(x,y) 2.7.x安装包、PCV库、VLfeat和本书用到的数据库。Python(x,y)可以在py..._pythonxy

Odoo12取消界面导入导出功能_odoo12隐藏导入按钮-程序员宅基地

文章浏览阅读2.6k次。在Odoo12中系统中有自带的导入功能,当个性化开发之后需要隐藏系统的导入功能以避免混乱,以采购为例:做法如下:点开设置界面,下拉找到 “导入 &amp; 导出” 然后取消勾选:会弹出警告 禁用此选项也会卸载以下模块:基础导入。然后点击保存之后会卸载系统的 基础导入模块,之后回到采购界面导入按钮就会消失: ..._odoo12隐藏导入按钮

javaweb基于Struts2开发数据上传在线网盘系统 源码-程序员宅基地

文章浏览阅读321次,点赞6次,收藏8次。基于Struts开发数据上传在线网盘系统:(毕业设计/课程设计)开发环境: Windows操作系统开发工具: MyEclipse+Jdk+Tomcat+SQLSERVER数据库运行效果图:基于Struts开发数据上传在线网盘系统:(毕业设计/课程设计)开发环境: Windows操作系统开发工具: MyEclipse+Jdk+Tomcat+SQLSERVER数据库基于Struts开发数据上传在线网盘系统:(毕业设计/课程设计)开发环境: Windows操作系统。

hbase应用场景_企业hbase应用场景-程序员宅基地

文章浏览阅读169次。搜索引擎应用:存储,索引快速查找增量数据存储:增量监控数据,增量用户交互数据,增量遥感数据,增量广告点击数据。用户内容服务:内容推荐引擎系统,用户模型服务(经过hbase处理过的内容并非直接作用于用户,可用来丰富与用户的交互,并不断产生新的数据来优化)。实时消息系统构建:处理数据如facebook,处理较小的临时数据集,是经常变化的。处理不断增加的数据集,是很少被访问的。参考:《HBase..._企业hbase应用场景

随便推点

Linux进程调度策略的发展和演变--Linux进程的管理与调度(十六)_什么时候重新计算所有进程的时间片(即counter的值)?如何计算?处于等待状态的进程-程序员宅基地

文章浏览阅读276次。1 前言1.1 进程调度内存中保存了对每个进程的唯一描述, 并通过若干结构与其他进程连接起来.调度器面对的情形就是这样, 其任务是在程序之间共享CPU时间, 创造并行执行的错觉, 该任务分为两个不同的部分, 其中一个涉及调度策略, 另外一个涉及上下文切换.1.2 进程的分类linux把进程区分为实时进程和非实时进程, 其中非实时进程进一步划分为交互式进程和批处理进程在linu..._什么时候重新计算所有进程的时间片(即counter的值)?如何计算?处于等待状态的进程

二月英语学习总结_rosettastone学习心得-程序员宅基地

文章浏览阅读334次。前言不知细叶谁裁出,二月春风似剪刀。正文二月的英语学习感觉还没有学够,二月份就过完了。仔细想想,二月份放年假加上天数少,原来如此。但是我的英语收获依旧很多哦。 二月的上旬一直在跟读第二遍Rosetta stone,每天都很有激情,很享受那种和大家一起读英语的感觉。通过对Rosetta stone的跟读,我对英语的口语更加自信了,而且收获了很多更好地学习英语的方法。 旧美:旧美在二月中旬开始进行,_rosettastone学习心得

IT外企那点儿事(23): 离弦没有回头箭-程序员宅基地

文章浏览阅读581次。这一章,我们最后来谈一谈离职的那些事情。根据不同的人跳槽的原因不同,离职的时候,大家会有不同的表现:低调淡出式:这种方式离职的人往往在原来的工作中,无论是上司关系,团队氛围,工作内容,公司制度,绩效评价等等方面都是相对比较满意的,因为猎头或是朋友的介绍,跳到一个机会更好,薪水更高,职位更高的地方去。由于原来的公司和上司待他不薄,所以他不希望因为自己的跳槽给团队带来波动,给上司带来不

前端,HBuilder第一天_用hbuilder做流量调查表-程序员宅基地

文章浏览阅读310次。前端代码基础测试<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>html</title> </head> <body> hello html~ hello html~ <br/> hello &nbsp; html~ </body></html><._用hbuilder做流量调查表

Html —— 表白弹幕 特效(效果+代码)-程序员宅基地

文章浏览阅读975次,点赞21次,收藏15次。核心竞争力,怎么才能提高呢?成年人想要改变生活,逆转状态?那就开始学习吧~万事开头难,但是程序员这一条路坚持几年后发展空间还是非常大的,一切重在坚持。为了帮助大家更好更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。

连接Mongodb数据库的步骤以及注意事项_如何连接mongodb数据库-程序员宅基地

文章浏览阅读3.8k次。连接进入Mongodb数据库的步骤以及一些注意事项_如何连接mongodb数据库

推荐文章

热门文章

相关标签