Description
国际象棋中的国王,可以攻击相邻的8个位置(即上、下、左、右和左上,左下,右上,右下),现在给定一个N * M的棋盘,以及其中放置的K个国王的位置,请问他们是否能够互相攻击。
Input
第一行:N M K——棋盘大小以及放置的国王数量(1<=n, m<=100, 0<=k<=200)
以后K行每行都包含两个值r和c,代表一个国王被放置在第r行第c列(棋盘的行序号从1到N,列序号从1到M)。
Output
如果存在国王可以相互攻击,输出“YES”,否则输出“NO”。
Sample Input
3 3 2
1 1
3 3
Sample Output
NO
#include<stdio.h>
int main(){
int n,m,k,i;
while(scanf("%d%d%d",&n,&m,&k)){ //注意输入格式
int p[k][2];
char arr[n+5][m+5];
for(i=0;i<k;i++){
scanf("%d%d",&p[i][0],&p[i][1]);
arr[p[i][0]][p[i][1]]='#';
}
for(i=0;i<k;i++){
if(arr[p[i][0]-1][p[i][1]-1]=='#' ||
arr[p[i][0]-1][p[i][1]]=='#' ||
arr[p[i][0]-1][p[i][1]+1]=='#' ||
arr[p[i][0]][p[i][1]-1]=='#' ||
arr[p[i][0]][p[i][1]+1]=='#' ||
arr[p[i][0]+1][p[i][1]-1]=='#' ||
arr[p[i][0]+1][p[i][1]]=='#' ||
arr[p[i][0]-1][p[i][1]+1]=='#' )
break;
}
if(i==k)printf("NO\n");
else printf("YES\n");
}
return 0;
}