其实是一道很简单的暴力水题,但是也要注意一定的方式方法,灵活运用标记数组
如果暴力判断的话会超时,而是选择标记数组,将x对应的炸弹值和y对应的炸弹值相加若正好等于总的炸弹值则为结果,但是注意有没有x数组和y数组都标记的位置
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
const int maxx=1005;
int x,y;
char mp[maxx][maxx];
int xx[maxx],yy[maxx];
int main()
{
scanf("%d %d",&x,&y);
for(int i=0;i<x;i++)
{
scanf("%s",mp[i]);
}
int sum=0;
for(int i=0;i<x;i++)
{
for(int j=0;j<y;j++)
{
if(mp[i][j]=='*')
{
xx[i]++;yy[j]++;
sum++;
}
}
}
int flag=0;
for(int i=0;i<x;i++)
{
for(int j=0;j<y;j++)
{
if((mp[i][j]=='*'&&xx[i]+yy[j]==sum+1)||(mp[i][j]!='*'&&xx[i]+yy[j]==sum))
{
printf("YES\n%d %d\n",i+1,j+1);
flag=1;
break;
}
}
if(flag==1)
{
break;
}
}
if(flag==0)
{
printf("NO\n");
}
return 0;
}