Background

我正在努力解决以下leetcode problem个问题.我已经编写了下面的函数,它似乎通过了示例测试用例.

My Code

def gridGame(grid):
    robot_score = 0
    for _ in range(2):
        robot_score = 0
        row_one_sum = sum(grid[0])
        row_two_sum = sum(grid[1])
        row = 0
        col = 0
        while row < len(grid) and col < len(grid[0]):
            # get current points
            robot_score += grid[row][col]
            # subtract points from sum
            if row == 0:
                row_one_sum -= grid[0][col]
            else:
                row_two_sum -= grid[1][col]
            # set current grid to 0
            grid[row][col] = 0
            # figure out next move
            if row == 0:
                if row_two_sum > row_one_sum or col == len(grid[0]) - 1:
                    row += 1
                else:
                    row_two_sum -= grid[row - 1][col - 1]
                    col += 1
            else:
                col += 1
    return robot_score

Test cases i am passing

grid = [[1,3,1,15],[1,3,3,1]]
grid = [[3,3,1],[8,5,2]]
grid = [[2,5,4],[1,5,1]]

Test Case I am Failing

gridGame([[10, 12, 14, 19, 19, 12, 19, 2, 17], [20, 7, 17, 14, 3, 1, 1, 17, 12]])

我试着调试了2.5个小时,但没有运气,我知道我可以在网上找到解决方案,但我正在努力理解我做错了什么.

我的总体方法是,我需要得到每一行的总和,然后我知道如果我移动正确,我可以得到多少分,而如果我向下移动,我可以得到多少分.

推荐答案

请考虑以下网格:

1 2 3 4 5
1 1 1 1 16

当您处于(0,0)时,第0行和第1行的总和分别为14和20,因此您将移动到第1行.而理想的策略是沿着第0行移动,然后移动到最后一列的第1行.

很容易看出备忘录是如何帮助你克服这个谬误的,因为你可以计算最大可能点数,从右边开始,向左边移动.我不会太深入,因为问题只是关于你的方法哪里出了问题.

Python相关问答推荐

替换为Pandas

使用SKLearn KMeans和外部生成的相关矩阵

Python(Polars):使用之前的变量确定当前解决方案的Vector化操作

按日期和组增量计算总价值

如何获取Django REST框架中序列化器内部的外卡属性?

使用matplotlib pcolormesh,如何停止从一行绘制的磁贴连接到上下行?

为什么dict(id=1,**{id:2})有时会引发KeyMessage:id而不是TypMessage?

如何在Python中使用ijson解析SON期间检索文件位置?

拆分pandas列并创建包含这些拆分值计数的新列

如何使用entry.bind(FocusIn,self.Method_calling)用于使用网格/列表创建的收件箱

LAB中的增强数组

pandas DataFrame GroupBy.diff函数的意外输出

Scrapy和Great Expectations(great_expectations)—不合作

为一个组的每个子组绘制,

从嵌套的yaml创建一个嵌套字符串,后面跟着点

如何保持服务器发送的事件连接活动?

考虑到同一天和前2天的前2个数值,如何估算电力时间序列数据中的缺失值?

通过ManyToMany字段与Through在Django Admin中过滤

如何更改groupby作用域以找到满足掩码条件的第一个值?

Flask Jinja2如果语句总是计算为false&