Java、python实现啊哈算法 —— chapter3 枚举 炸弹人

这个例子不是很难,也没有太多抽象的内容,细心就好,下面上代码

python:

import numpy
import numpy as np

global n
global map
def zhadanren():
    global n, map
    res = -1
    res_i = -1
    res_j = -1
    for i in range(n):
        for j in range(n): #从左上角第一个元素循环遍历地图中的所有元素,找到空地放置炸弹
            num = 0 #记录将炸弹放置在这一点可以消灭的敌人个数
            if map[i][j] == '.':
                x, y = i, j
                while map[x][y] != '#': #从放置炸弹的这一点往上数,计算在遇到墙之前可以消灭的敌人个数
                    x -= 1
                    if map[x][y] == 'G':
                        num += 1
                x, y = i, j
                while map[x][y] != '#':#从放置炸弹的这一点往下数,计算在遇到墙之前可以消灭的敌人个数
                    x += 1
                    if map[x][y] == 'G':
                        num += 1
                x, y = i, j
                while map[x][y] != '#':#从放置炸弹的这一点往左数,计算在遇到墙之前可以消灭的敌人个数
                    y -= 1
                    if map[x][y] == 'G':
                        num += 1
                x, y = i, j
                while map[x][y] != '#':  # 从放置炸弹的这一点往右数,计算在遇到墙之前可以消灭的敌人个数
                    y += 1
                    if map[x][y] == 'G':
                        num += 1
            else:
                continue
            if num > res:
                res = num
                res_i = i
                res_j = j
    print(res, res_i, res_j)

if __name__ == '__main__':
    global n, map
    map = []
    n = int(input('输入地图行数:'))
    for i in range(n):
        list_a = list(input('输入地图中一行:'))
        map.append(list_a)
    zhadanren()
上一篇:随时找到数据流的中位数


下一篇:子数组的取值范围-贪心算法