小桥流水人家(python)

题目描述

在n*m的地图上,存在一个喷水点(x,y). 如果相邻的位置低于有水的地方,水就能流到相邻的某位置。 已知各个地方的海拔高度,求水的最大覆盖个格子数。

输入描述:

第一行输入n,m,x,y.(1<=n,m<=1000,1<=x<=n,1<=y<=m) 以下n行每行m个整数,表示每个格子的海拔.(1<=h<=1000)

输出描述:

输出最大覆盖格子数

示例

输入

3 5 2 3
3 4 1 5 1
2 3 3 4 7
4 1 4 1 1

输出

6


# 请关闭中文输入法,用英文的字母和标点符号。
# 如果你想运行系统测试用例,请点击【执行代码】按钮,如果你想提交作答结果,请点击【提交】按钮,
# 注意:除答案外,请不要打印其他任何多余的字符,以免影响结果验证
# 本OJ系统是基于 OxCoder 技术开发,网址:www.oxcoder.com
# 模版代码提供基本的输入输出框架,可按个人代码习惯修改

class Solution:
    def __init__(self) -> None:
        pass
    
    def solution(self, n, m, x, y, vector):
        result = -1
        len_coor = 0
        t = x
        x = 3-y
        y = t-1
        coor_i_j = []
        for i in range(0, n):
            for j in range(0, m):
                coor = []
                if vector[i][j] < vector[x][y]:
                    coor.append(i)
                    coor.append(j)
                    coor_i_j.append(coor)
                    len_coor +=1
        coor_con = [[x,y]]
        for j in range(0, len(coor_con)):
            for i in range(0, len(coor_i_j)):
                if (abs(coor_i_j[i][0] - coor_con[j][0])<=1 and coor_i_j[i][1] == coor_con[j][1]) or (abs(coor_i_j[i][1] - coor_con[j][1])<=1 and coor_i_j[i][0] == coor_con[j][0]):
                    coor_con.append(coor_i_j[i])
        for i in range(0, len(coor_con)-1):
                if coor_con[i][0] == coor_con[i+1][0] and coor_con[i][1] == coor_con[i+1][1]:
                    pass
                else:
                    result += 1
        return result

if __name__ == "__main__":


    
    arr_temp = [int(item) for item in input().strip().split()]
    
    n = int(arr_temp[0])
    m = int(arr_temp[1])
    x = int(arr_temp[2])
    y = int(arr_temp[3])
    
    vector = []
    for i in range(n):
        vector.append([int(item) for item in input().strip().split()])
    
    
    sol = Solution()
    result = sol.solution(n, m, x, y, vector)

    print(result)


未通过,报错,怀疑是题目中xy与程序表示不一致导致

运行失败:不通过
您的代码已保存。
出现错误,您提交的程序运行出错,请根据以下提示进行修改。
Traceback (most recent call last):
File "Main.py", line 56, in
result = sol.solution(n, m, x, y, vector)
File "Main.py", line 22, in solution
if vector[i][j] < vector[x][y]:
IndexError: list index out of range

xy做了转换是因为读题时觉得按照题目中描述,(2,3)点海拔是3,与其相邻且小于它的只有海拔是1的点,显然与答案不符,于是论坛搜索是否有人与我想法一致,看到了一位朋友(TLY-101-010)的解读,按照此方法进行转换,示例可以通过,但是不满足后台判例,比较疑惑,如果有人已通过,可否解答一下疑问呢?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值