python/pta 7-42 纵横

文章描述了一种策略游戏场景,莫大侠使用特定技能消灭位于正方形网格中的怪物。目标是找出能消灭最多怪物的起始位置,并在有多解时优先选择行号较小的位置。输入包含网格的大小和各位置的怪物数量,输出是最佳位置的行号、列号和可消灭的怪物总数。
摘要由CSDN通过智能技术生成

7-42 纵横

莫大侠练成纵横剑法,走上了杀怪路,每次仅出一招。这次,他遇到了一个正方形区域,由n×n个格子构成,每个格子(行号、列号都从1开始编号)中有若干个怪。莫大侠施展幻影步,抢占了一个格子,使出绝招“横扫四方”,就把他上、下、左、右四个直线方向区域内的怪都灭了(包括抢占点的怪)。请帮他算算他抢占哪个位置使出绝招“横扫四方”能杀掉最多的怪。如果有多个位置都能杀最多的怪,优先选择按行优先最靠前的位置。例如样例中位置(1,2)、(1,3),(3,2),(3,3)都能杀5个怪,则优先选择位置(1,2)。

输入格式:

首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。对于每组测试,第一行输入n(3≤n≤20),第二行开始的n行输入n×n个格子中的怪数(非负整数)。

输出格式:

对于每组测试数据输出一行,包含三个整数,分别表示莫大侠抢占点的行号和列号及所杀的最大怪数,数据之间留一个空格。

输入样例:

2
3
1 1 1
0 1 1
1 1 1
3
3 2 1
4 6 5
8 7 9

输出样例:

1 2 5
3 2 32

求助同学给出了解答  

for i in range(int(input())):
    n=int(input())
    a=[[0 for j in range(n+1)]]
    for j in range(n):
        r=list(map(int,input().split()))
        r.insert(0,0)
        a.append(r)
    ans=0
    rr=[sum(w)for w in a]
    tt=[]
    for j in range(n+1):
        col=[row[j] for row in a]
        tt.append(sum(col))
        # print(tt)
    # print(rr)
    # print(tt)
    q,p=0,0
    for j in range(1,n+1):
        for k in range(1,n+1):
            if rr[j]+tt[k]-a[j][k]>ans:
                ans=rr[j]+tt[k]-a[j][k]
                p,q=j,k
    print(p,q,ans)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值