1488: 国王的战争

xiaoxiao2021-02-27  237

1488: 国王的战争

时间限制: 1 Sec   内存限制: 128 MB 提交: 5   解决: 3 上一题 提交 状态 下一题

题目描述

国际象棋中的国王,可以攻击相邻的8个位置(即上、下、左、右和左上,左下,右上,右下),现在给定一个N * M的棋盘,以及其中放置的K个国王的位置,请问他们是否能够互相攻击。

输入

第一行:N M K——棋盘大小以及放置的国王数量(1<=n, m<=100, 0<=k<=200)

以后K行每行都包含两个值r和c,代表一个国王被放置在第r行第c列(棋盘的行序号从1到N,列序号从1到M)。

输出

如果存在国王可以相互攻击,输出“YES”,否则输出“NO”。

样例输入

3 3 21 13 3

样例输出

NO

提示

来源

2014 Anhui College Student Programming Contest

1号程序员:唯有养猪才能致富   代码最简:褚申申(580)   效率最高:褚申申(1564) #include <iostream> #include <cstdio> using namespace std ; int map[101][101]={0}; int dir[8][2]={0,1,1,0,0,-1,-1,0,1,1,-1,1,1,-1,-1,-1}; int main(){ int x,y,k,r,c; int t=0; scanf("%d%d%d", &x, &y, &k); while(k--){ scanf("%d%d", &r, &c); map[r][c]=1; for(int i=0;i<8&&t==0;i++){ if(map[r+dir[i][0]][c+dir[i][1]]) t=1; } } if(t==1) printf("YES\n"); else printf("NO\n"); return 0; }
转载请注明原文地址: https://www.6miu.com/read-9806.html

最新回复(0)