CodeForces 699B One Bomb

来源:互联网 发布:python接口测试 编辑:程序博客网 时间:2024/05/17 02:08

2016暑期集训3-C

CodeForces 699B One Bomb

想法题

传送门:HustOJ

传送门:CodeForce


题意

给你m*n矩阵,表示一个地图,图上 . 表示空的,*表示墙。请你在图上放一个炸弹(可以放在墙的位置上),炸弹会炸掉所在行和所在列的墙。问一枚炸弹能不能炸掉所有墙。


思路

思路很简单,问题是如何简单代码实现。读图时记录每行每列炸弹数以及炸弹总数。然后开始枚举格子,算当前格子所在行,列的炸弹数,等于总数就ok。


代码

#include <iostream>#include<cstdio>#include<algorithm>#include<cstdlib>#include<cstring>#include<cmath>#include<vector>#include<queue>#include<stack>#include<iomanip>#include<string>using namespace std;const int MAXN = 1007;const int oo = 2000000007;const long long int loo = 2000000000000000007ll;typedef long double ld;typedef long long ll;using namespace std;int main(){    int m,n;    scanf("%d%d",&m,&n);    getchar();    char a[MAXN][MAXN];    memset(a,0,sizeof(a));    int r[MAXN];    memset(r,0,sizeof(r));    int c[MAXN];    memset(c,0,sizeof(c));    int sum=0;    for(int i=1;i<=m;i++)    {        for(int j=1;j<=n;j++)        {            scanf("%c",&a[i][j]);            if(a[i][j]=='*')            {                r[i]++;                c[j]++;                sum++;            }        }        getchar();    }    for(int i=1;i<=m;i++)    {        for(int j=1;j<=n;j++)        {            int temp=0;            temp=temp+r[i]+c[j];            if(a[i][j]=='*')            {                temp--;            }            if(temp==sum)            {                printf("YES\n%d %d",i,j);                return 0;            }        }    }    printf("NO\n");    return 0;}
0 0
原创粉丝点击