Codeforces Round #363 (Div. 2)--B
2016-07-20 10:21
295 查看
题意:
给两个数n,m,之后给出n行m列的字符矩阵,* 号代表墙,“.”表示空地,需要在字符矩阵里面安放炸弹,如果可以炸掉所有的墙,就输
出YES,并输出安放炸弹的坐标,如果没有这样的位置,则输出NO。
输入:
输出:
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;
}
给两个数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;
}
相关文章推荐
- 【杭电】[5053]the Sum of Cube
- 修改SVN中文件的可执行属性
- poj-1742 COINS(多重背包问题)
- 【js】检测CSS JS 文件是否被引入。
- 7. Reverse Integer
- ODS浅析
- 如何判断大小端
- php提交表单不刷新页面
- 平衡搜索树
- 游戏策划一类的,非常好
- Ubuntu Navicat正版永久使用方法
- .NET Core Roadmap
- c++ this 指针的理解
- POJ - 3009 - Curling 2.0(dfs)
- AppCan应用开发之插件实践篇-支付插件
- linux中~和斜杠的区别
- Android 缓存的编写应用
- Centos6两个镜像文件的合并方法
- 欲先攻其事必先利其器 (第三方资源篇)
- widow下svn上传项目时的文件可执行权限问题