题目描述:
现有关卡:游戏者只有一枚炸弹,且炸弹可以杀死杀伤范围内所有敌人。请问炸弹放在哪个位置,可以消灭最多的敌人。
题目的抽象化
墙用#表示,敌人用G表示,空地用.表示
上代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a[20][21];//建立一个二维字符数组,表示x行y列
int i,j,sum,ma=0;
int p,q,x,y,n,m;
cin>>n>>m;//输入行数和列数
for(i=0;i<=n-1;i++)
{
for(j=0;j<m;j++)
{
cin>>a[i][j];//输入题目信息
}
}
for(i=0;i<n;i++)
{
for(j=0;j<m;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>ma)//更新最大杀敌数
{
ma=sum;
p=i;//记录坐标
q=j;//记录该点坐标
}
}
}
}
//cout<<p<<q<<endl;
cout<<ma;
}