炸弹人

85 阅读1分钟

Problem Description

放置一枚炸弹,找出能消灭最多敌人的点,炸弹不能穿墙,其中墙用#表示,敌人用G表示,空地用.表示,当然炸弹只能放在空地上。

Input

输入第一行两个整数m,n(0<m,n<20),然后是m行和n列,假设最少能消灭1个敌人。

Output

输出炸弹放置的位置和最多消灭的敌人数,格式如样例。

Sample Input

13 13
#############
#GG.GGG#GGG.#
###.#G#G#G#G#
#.......#..G#
#G#.###.#G#G#
#GG.GGG.#.GG#
#G#.#G#.#.###
##G...G.....#
#G#.#G###.#G#
#...G#GGG.GG#
#G#.#G#G#.#G#
#GG.GGG#G.GG#\

#############

Sample Output

(9,9) 8

程序代码:

#include<stdio.h>
int main()
{
char a[25][25];
int i,j,m,n,x,y,p,q,sum,max=0;
scanf("%d%d",&m,&n);
for(i=0;i<m;i++)
scanf("%s",a[i]);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if(a[i][j]=='.')
{
sum=0;
x=i;
y=j;
while(a[x][y]!='#')
{
if(a[x][y]=='G')
sum++;
x--;
}
x=i;
y=j;
while(a[x][y]!='#')
{
if(a[x][y]=='G')
sum++;
x++;
}
x=i;
y=j;
while(a[x][y]!='#')
{
if(a[x][y]=='G')
sum++;
y--;
}
x=i;
y=j;
while(a[x][y]!='#')
{
if(a[x][y]=='G')
sum++;
y++;
}
if(sum>max)
{
max=sum;
p=i;
q=j;
}
}
printf("(%d,%d) %d\n",p,q,max);
return 0;
}
\

\




\