思路:
1、统计星号的个数cont
2、统计每一行、每一列上边星号的个数。
3、然后对坐标每一个点都进行枚举,对应当前坐标能够搞定的星号个数为:tmp=row【i】+col【j】;if(a【i】【j】是星号,对应值减一.)如果tmp==cont,那么当前坐标就是可行解。
4、注意没有星号的情况。
Ac代码:
#include<stdio.h>
#include<string.h>
using namespace std;
char a[1005][1005];
int col[1005];
int row[1056];
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
int ok=1;
for(int i=0;i<n;i++)
{
scanf("%s",a[i]);
}
int cont=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(a[i][j]=='*')
{
col[j]++;
row[i]++;
cont++;
}
}
}
if(cont==0)
{
printf("YES\n 1 1\n");
continue;
}
int x,y;
int flag=0;
x=-1;y=-1;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
int tmp=row[i]+col[j];
if(a[i][j]=='*')tmp--;
if(tmp==cont)
{
flag=1;
x=i;y=j;
break;
}
}
if(flag==1)break;
}
if(flag==1)
{
printf("YES\n");
printf("%d %d\n",x+1,y+1);
}
else printf("NO\n");
}
}

本题探讨在一个给定的矩阵中,如何通过放置一枚炸弹来清除所有障碍物。具体实现涉及统计每行每列的障碍数量,并检查是否存在一个位置使得引爆该位置能清除所有障碍。

被折叠的 条评论
为什么被折叠?



