求助,vjudge上一直过不了
查看原帖
求助,vjudge上一直过不了
413544
天罡五雷_楼主2022/8/22 15:04

提很简单,码量不多,但就是WA了...

#include <bits/stdc++.h>
using namespace std;
int n;
int hx,hy;
char sc;
int sx,sy;
int qp[15][15];//0:安全格 1:不安全且无棋 与 不安全且有棋 2:安全且有棋
bool q[15][15];
int mx[]={-2,-2, 2, 2, 1,-1, 1,-1};
int my[]={ 1,-1, 1,-1, 2, 2,-2,-2};
int bx[]={-1,-1, 1, 1, 0, 0, 0, 0};
int by[]={ 0, 0, 0, 0, 1, 1,-1,-1};
void tj(char c,int x,int y){
	if(c=='R'){
		for(int i=x-1;i>0;i--){
			qp[i][y]=1;
			if(q[i][y]) break;
		}
		for(int i=x+1;i<=10;i++){
			qp[i][y]=1;
			if(q[i][y]) break;
		}
		for(int j=y-1;j>0;j--){
			qp[x][j]=1;
			if(q[x][j]) break;
		}
		for(int j=y+1;j<=9;j++){
			qp[x][j]=1;
			if(q[x][j]) break;
		}
		q[x][y]=1;
		qp[x][y]=2;
	}else if(c=='H'){
		for(int l=0;l<8;l++){
			int mxx=x+mx[l],myx=y+my[l];
			int bxx=x+bx[l],byx=y+by[l];
			if(!q[bxx][byx]){
				if(0<mxx&&mxx<=10&&0<myx&&myx<=9){
					qp[mxx][myx]=1;
				}
			}
		}
		q[x][y]=1;
		qp[x][y]=2;
	}else{
		bool fs=0;
		for(int i=x-1;i>0;i--){
			if(!fs&&q[i][y]){ fs=1;continue; }
			if(fs) qp[i][y]=1;
			if(fs&&q[i][y]) break;
		}
		fs=0;
		for(int i=x+1;i<=10;i++){
			if(!fs&&q[i][y]){ fs=1;continue; }
			if(fs) qp[i][y]=1;
			if(fs&&q[i][y]) break;
		}
		fs=0;
		for(int j=y-1;j>0;j--){
			if(!fs&&q[x][j]){ fs=1;continue; }
			if(fs) qp[x][j]=1;
			if(fs&&q[x][j]) break;
		}
		fs=0;
		for(int j=y+1;j<=9;j++){
			if(!fs&&q[x][j]){ fs=1;continue; }
			if(fs) qp[x][j]=1;
			if(fs&&q[x][j]) break;
		}
		q[x][y]=1;
		qp[x][y]=2;
	}
}
int main(){
	while(1){
		scanf("%d%d%d",&n,&hx,&hy);
		if(n==0&&hx==0&&hy==0) break;
		for(int i=1;i<=10;i++) for(int j=1;j<=9;j++){ qp[i][j]=0;q[i][j]=0; }
		q[hx][hy]=1;
		q[10][5]=1;
		tj('R',10,5);
		for(int i=1;i<=n;i++){
			scanf("\n%c%d%d",&sc,&sx,&sy);
			tj(sc,sx,sy);
		}
		bool can=0;
		for(int i=0;i<8;i+=2){//巧妙的用一下bx与by数组 
			int aox=hx+bx[i],aoy=hy+by[i];
			if(0<aox&&aox<=3&&4<=aoy&&aoy<=6){
				if(qp[aox][aoy]!=1){
					can=1;
					break;
				}
			}
		}
		if(!can) printf("YES\n\n");
		else printf("NO\n\n");
	}
	return 0;
} 

刚好一百行,真的不多

2022/8/22 15:04
加载中...