炸弹人(枚举解决)

题目描述:
现有关卡:游戏者只有一枚炸弹,且炸弹可以杀死杀伤范围内所有敌人。请问炸弹放在哪个位置,可以消灭最多的敌人。
在这里插入图片描述
题目的抽象化
墙用#表示,敌人用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;

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值