zoukankan      html  css  js  c++  java
  • 首师大附中科创教育平台 我的刷题记录 0304 50095106扔核弹(XDC,你懂的)

    今天给大家献上“C”级题:50095106扔核弹(XDC,你懂的)!!

    试题编号:0304    
    50095106扔核弹(XDC,你懂的)
    难度级别:C; 运行时间限制:1000ms; 运行空间限制:51200KB; 代码长度限制:2000000B
    试题描述

        21xx年,ussr与us爆发了战争,us想将ussr肢解,于是毫不犹豫的准备使用战略核导弹。你现在正是战略打击部队的司令官,你收到了一幅由卫星发送的加密图片(n*m大小),在这张图片中“.”代表空地,“G”代表敌方军队,“#”代表三防(防核武,防化武,防自然威胁)设施。你的核弹当量极大,可以消灭杀伤范围内所有的暴徒。但你的核弹只能投送到空地上,且如果遇到了三防设施则不再构成杀伤范围(横着一行,竖着一行,碰到三防设施就不构成杀伤范围)。现在你的导弹发射架在(3,3)位置上,为了起到肢解效果,请你输出杀伤暴徒最多的方案,和最多可以杀死暴徒的个数(邪恶......)。

    输入
    第一行:两个整数n,m。
    接下来是一张由“G”“#”“.”所构成的一张图,代表卫星发回的地图。 
    输出
    一句话如下格式
    将导弹投送到(x,y),最多可以消灭z个敌人。
    输入示例
    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#
    #############
    输出示例
    将导弹投送到(7,11),最多可以消灭10个敌人。
    其他说明
    LJX认为n与m不会大于26。

     好的,以上就是50095106扔核弹(XDC,你懂的)的题目要求,现在献上代码!!!当当当!!! 

    #include<iostream>
    using namespace std;
    char a[50][50];
    int maxn=-10000,book[50][50],n,m,mx,my;
    int res(int i,int j)
    {
        int sum=0,l,b;
        l=i;
        b=j;
        while(a[l][b]!='#')
        {
            if(a[l][b]=='G') sum++;
            b++;
        }
        l=i;
        b=j;
        while(a[l][b]!='#')
        {
            if(a[l][b]=='G') sum++;
            b--;
        }
        l=i;
        b=j;
        while(a[l][b]!='#')
        {
            if(a[l][b]=='G') sum++;
            l++;
        }
        l=i;
        b=j;
        while(a[l][b]!='#')
        {
            if(a[l][b]=='G') sum++;
            l--;
        }
        return sum;
    }
    void dfs(int x,int y)
    {
         int next[4][2]={{0,1},
                         {1,0},
                         {0,-1},
                         {-1,0}};
         int sum,tx,ty,k;
         sum=res(x,y);
         if(sum>maxn)
         {
             maxn=sum;
             mx=x;
             my=y;
         }
         for(k=0;k<=3;k++)
         {
             tx=x+next[k][0];
             ty=y+next[k][1];
             if(tx<0 || tx>n-1 || ty<0 || ty>m-1) continue;
             if(a[tx][ty]=='.' && book[tx][ty]==0)
             {
                 book[tx][ty]=1;
                 dfs(tx,ty);                  
             }
         }
         return ;
    }
    int main()
    {
        int i,startx=3,starty=3;
        cin>>n>>m;
        for(int i=0;i<n;i++)
            for(int j=0;j<m;j++)
                cin>>a[i][j];
        book[startx][starty]=1;
        maxn=res(startx,starty);
        mx=3;
        my=3;
        dfs(3,3);
        cout<<"将导弹投送到("<<mx<<","<<my<<"),最多可以消灭"<<maxn<<"个敌人。";
    }
    50095106扔核弹(XDC,你懂的)!!!!!
  • 相关阅读:
    C++语言的url encode 和decode
    ICE实现服务器客户端
    ICE:slice语言常识整理
    SSH框架总结(框架分析+环境搭建+实例源代码下载)
    MyEclipse下XFire开发Webservice实例
    关于hashCode与equals
    xcode 4.5 new feature __ ios6 新特性
    js中substr与substring的差别
    MP算法和OMP算法及其思想
    android传感器;摇一摇抽签功能
  • 原文地址:https://www.cnblogs.com/mayitao/p/5941041.html
Copyright © 2011-2022 走看看