zoukankan      html  css  js  c++  java
  • 洛谷 P2356 弹珠游戏

    题目链接:https://www.luogu.org/problemnew/show/P2356

    题目

    题目描述

    MedalPluS 和他的小伙伴 NOIRP 发掘了一个骨灰级别的游戏——超级弹珠。

    游戏的内容是:在一个 n*n 的矩阵里,有若干个敌人,你的弹珠可以摧毁敌人,但只

    能攻击你所在的行、列里的所有敌人,然后你就可以获得他们的分数之和,现在请你选择

    一个你的位置,使得能击杀的敌人最多,注意,你不能和敌人在一个地方

    输入输出格式

    输入格式:

    输入有两行,第一行一个正整数 n,接下来 n 行,每行 n 列,如果有敌人则为一个正整数,否则为 0

    输出格式:

    输出共一行,最多分数,如果连你的容身之地都没有,请输出“Bad Game!”

    输入输出样例

    输入样例#1: 复制
    4
    1 1 1 0
    1 1 1 1
    1 1 1 1
    0 1 1 1
    输出样例#1: 复制
    6

    说明

    送分题,客官请拿好,(*^__^*) 嘻嘻……

    【数据范围】

    对于 30%的数据,1≤n≤10

    对于 100%的数据,1≤n≤1000,保证容身之地的数量小于 10000

    解析

    读入时利用queue存储可以进攻的位置,之后对于每个点利用while向四个方向加上每个点权值即可。

    代码

    #include<bits/stdc++.h>
    using namespace std;
    int mp[1003][1003];
    queue<int> xx,yy;
    int n;
    int MAXN=0;
    int flag=0;
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                cin>>mp[i][j];
                if(mp[i][j]==0)
                {
                    xx.push(i);
                    yy.push(j);
                    flag=1;
                }
            }
        }
        if(flag==0) cout<<"Bad Game!"<<endl;
        while(xx.empty()!=true&&yy.empty()!=true)
        {
            int sum=0;
            int nowx=xx.front();
            int nowy=yy.front();
            xx.pop();
            yy.pop();
            int right=nowx;
            int left=nowx;
            int up=nowy;
            int down=nowy;
            while(right<=n)
            {
                right++;
                sum=sum+mp[right][nowy];
            }
            while(left>=1)
            {
                left--;
                sum=sum+mp[left][nowy];
            }
            while(up<=n)
            {
                up++;
                sum=sum+mp[nowx][up];
            }
            while(down>=1)
            {
                down--;
                sum=sum+mp[nowx][down];
            }
            MAXN=max(sum,MAXN);
            sum=0;
        }
        cout<<MAXN<<endl;
    }
  • 相关阅读:
    131. Palindrome Partitioning
    130. Surrounded Regions
    129. Sum Root to Leaf Numbers
    128. Longest Consecutive Sequence
    125. Valid Palindrome
    124. Binary Tree Maximum Path Sum
    122. Best Time to Buy and Sell Stock II
    121. Best Time to Buy and Sell Stock
    120. Triangle
    119. Pascal's Triangle II
  • 原文地址:https://www.cnblogs.com/KyleDeng/p/9245175.html
Copyright © 2011-2022 走看看