码迷,mamicode.com
首页 > 其他好文 > 详细

【疑问】2011 Asia Fuzhou Regional A

时间:2015-02-07 17:31:51      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:基础练习

总是WA 自己试了些数据都没问题 有哪位大神愿意给看下

思路就是模拟 先存下来各个点位置 然后让将依次尝试四个位置 把吃掉的子赋值为0 对于每个位置 先判断马 再按四个方向判断车和帅 如果遇到炮或马就看看后边有没有炮

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int xx=10,yy=9;
int a[11][10];//you can't value it when announcing,only memset(a,0,sizeof(a)) 
int dx[4]={0,1,0,-1},dy[4]={-1,0,1,0};//将增量
int horseX[8]={-2,-2,2,2,-1,1,-1,1};//马dx
int horseY[8]={-1,1,-1,1,-2,-2,2,2};//马dy
int footX[8]={-1,-1,1,1,0,0,0,0};//马别腿fx
int footY[8]={0,0,0,0,-1,-1,1,1};//马别腿fy
    
bool judge(int nx,int ny){//判断是否生存
	a[nx][ny]=0;
	int i;
	for (i=0;i<7;i++){
		int nowi=nx+horseX[i];
		int nowj=ny+horseY[i];
		if (a[nowi][nowj]==3){
			if (a[nx+footX[i]][ny+footY[i]]) return false;
		}
	}
	for (i=nx+1;i<=xx;i++){
		if (a[i][ny]!=0){
			if ((a[i][ny]==2)||(a[i][ny]==5)) return false;
			else for (int j=i+1;j<=xx;j++) if (a[j][ny]==4) return false;
		} 
	}
	for (i=ny+1;i<=yy;i++){
		if (a[nx][i]!=0){
		    if ((a[nx][i]==2)||(a[nx][i]==5)) return false;
		    else for (int j=i+1;j<=yy;j++) if (a[nx][j]==4) return false;
	    }
	}
	for (i=nx-1;i>=1;i--) if (a[i][ny]==2) return false;
	for (i=ny-1;i>=1;i--){
		if (a[nx][i]!=0){
			if (a[nx][i]==2) return false;
			else for (int j=i-1;j>=1;j--) if (a[nx][j]==4) return false;
		}
	}
	return true;
}

int main(){
	memset(a,0,sizeof(a)); 
	int n,nx,ny;
	while ((cin>>n>>nx>>ny) && n){
		char ch;//R=ju=2;H=ma=3;C=pao=4;G=shuai=5;
		int x,y;
		for (int i=1;i<=n;i++){
			cin>>ch>>x>>y;
			if (ch=='R') a[x][y]=2;
			else if (ch=='G') a[x][y]=5;
			else if (ch=='H') a[x][y]=3;
			else if (ch=='C') a[x][y]=4;
		}
		int k,h,i,j;
		bool flag=false;
		for (i=0;i<4;i++){
			if ((nx+dx[i]<1)||(nx+dx[i]>3)||(ny+dy[i]<4)||(ny+dy[i]>6)) continue;
			flag=judge(nx+dx[i],ny+dy[i]);
			if (flag) break;
		} 
		if(flag) cout<<"NO"<<endl;
		else cout<<"YES"<<endl;
	}
	return 0;
}


【疑问】2011 Asia Fuzhou Regional A

标签:基础练习

原文地址:http://blog.csdn.net/ametake/article/details/43604207

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!