Codeforces Round #363 (Div. 2)--B

来源:互联网 发布:b站知名UP主黑历史知乎 编辑:程序博客网 时间:2024/06/06 00:06

题意:

给两个数n,m,之后给出n行m列的字符矩阵,* 号代表墙,“.”表示空地,需要在字符矩阵里面安放炸弹,如果可以炸掉所有的墙,就输

出YES,并输出安放炸弹的坐标,如果没有这样的位置,则输出NO。


输入:

6 5..*....*..*****..*....*....*..

3 3..*.*.*..

输出:

YES3 3

NO


分析:

直接暴力,首先遍历,记录*的数量和每一行,每一列的*的数量,之后遍历所有点,如果该点的所在的行列的*总数等于所有的*号总

数,(如果该点是*号,需要-1,)那么就可以在该点放置炸弹,如果没有这样的点就输出NO。


代码:

#include <bits/stdc++.h>using namespace std;const int maxn=1000+10;char c[maxn][maxn];int rr[maxn],cc[maxn];int main(){    int n,m;    cin >>n>>m;    int num = 0;    for(int i = 0; i < n; ++i)    {        cin >>c[i];        for(int j = 0; j < m; ++j)        {            if(c[i][j] == '.')                continue;            num++;            rr[i]++;            cc[j]++;        }    }    int f=-1,y=0;    for(int i = 0; i < n && f == -1; ++i)        for(int j = 0; j < m && f == -1; ++j)        {            if(rr[i]+cc[j]+(c[i][j]=='*'?-1:0)==num)            {                f=i;                y=j;            }        }    if(f == -1)        cout <<"NO"<<endl;    else        cout <<"YES"<<endl<<f+1<<' '<<y+1<<endl;    return 0;}

0 0
原创粉丝点击