您的位置:首页 > 其它

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

2016-07-20 10:21 295 查看
题意:

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

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

输入:

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


3 3
..*
.*.
*..


输出:

YES
3 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: