2014省赛-G国王的战争

来源:互联网 发布:i7港版网络 编辑:程序博客网 时间:2024/05/22 12:39

G.国王的战争

Time Limit: 1000 MSMemory Limit: 65536 KBTotal Submissions: 81Accepted: 51

Description


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



Input


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

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


Output


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


Sample Input


3 3 2
1 1
3 3

Sample Output


NO

Source


安徽省2014年“京胜杯”大学生程序设计竞赛

水题

/** * Project Name: 省赛  * File Name: G国王的战争.cpp * Created on: 2015年4月26日 下午2:30:38 * Author: jtahstu  * QQ: 1373758426 E-mail:1373758426@qq.com * Copyright (c) 2015, jtahstu , All Rights Reserved. *///Sample Input//3 3 2//1 1//3 3//Sample Output//NO#include<iostream>#include<cstdio>#include<cmath>#include<algorithm>#include<string>#include<cstring>using namespace std;int main() {    int a[105][105], n, m, k, x, y;    while (cin >> n >> m >> k) {        memset(a, 0, sizeof(a));        for (int i = 0; i < k; i++) {            cin >> x >> y;            a[x][y] = 1;        }        bool flag = true;        for (int i = 1; i <= n; i++)            if (flag)                for (int j = 1; j <= m; j++) {                    if (a[i][j] == 1) {                        if (a[i - 1][j] == 1 || a[i - 1][j - 1] == 1                                || a[i - 1][j + 1] == 1 || a[i + 1][j] == 1                                || a[i + 1][j + 1] == 1 || a[i + 1][j - 1] == 1                                || a[i][j - 1] == 1 || a[i][j + 1] == 1) {                            flag = false;                            break;                        }                    }                }        if (!flag)            cout << "YES" << endl;        else            cout << "NO" << endl;    }    return 0;}
0 0
原创粉丝点击