栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【洛谷】P2356 弹珠游戏 c++

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【洛谷】P2356 弹珠游戏 c++

题目背景

元宵节不放假挺郁闷的,于是时间机智的改到了星期6一整天!

题目描述

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

这道题直接暴力遍历也是可以过的,把行和列的分数算出来就好啦^v^

AC代码:

#include
using namespace std;

int a[10050][10050];
int sum = 0;
int flage = 0;
int n;

int main(){
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cin >> a[i][j];
        }
    }

    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if(a[i][j] == 0){
                int sum1 = 0;
                for (int l = 0; l < n; l++)//行号不变,列号变,累加就能得到一行的分数
                {
                    if(a[i][l]){//只要不是零就可以
                        sum1 += a[i][l];//把它(分数)累加起来
                    }
                }
                for (int h = 0; h < n; h++)//列号不变,行号变,累加就能得到一列的分数
                {
                    if(a[h][j]){//同上
                        sum1 += a[h][j];
                    }
                }
                flage = 1;
                sum = max(sum1, sum);//取最大
            }   
        }
    }
    if(flage == 0){
        cout << "Bad Game!";
    }else{
        cout << sum;
    }
    return 0;
}

这道题是很简单的一道题,就无脑遍历就行,但是,我看错题了,它算的是分数,我想当然的以为矩阵里只有0和1……结果就是疯狂错(只对一个样例)

题目来源:洛谷 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/835978.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号