zgjja


私信TA

用户名:zgjja

访问量:10819

签 名:

X_X

等  级
排  名 147
经  验 7112
参赛次数 0
文章发表 71
年  龄 0
在职情况 学生
学  校
专  业 X_X

  自我简介:

解题思路:
类似题目:https://www.dotcpp.com/oj/problem1639.html    题解:https://blog.dotcpp.com/a/77794

参考:http://www.voidcn.com/article/p-xlafzyov-bqa.html


注意事项:
Python用四维DP会超时

参考代码:

1.

rows, cols = map(int, input().split())
students = [[0 for _ in range(cols + 1)]] + [[0] + list(map(int, input().split())) for _ in range(rows)]
dp = [[[0 for _ in range(rows + 1)] for _ in range(rows + 1)] for _ in range(rows + cols + 1)]

for i in range(2, rows + cols + 1):
    for j in range(1, rows + 1):
        for k in range(1, rows + 1):
            temp_0, temp_1 = i - j, i - k
            if 1 <= temp_0 <= cols and 1 <= temp_1 <= cols:
                temp = students[j][temp_0] + students[k][temp_1] if j != k else students[j][temp_0]
                dp[i][j][k] = max(dp[i - 1][j][k], dp[i - 1][j - 1][k - 1],
                                  dp[i - 1][j][k - 1], dp[i - 1][j - 1][k]) + temp
print(dp[-1][-1][-1])

2.

rows, cols = map(int, input().split())
students = [list(map(int, input().split())) for _ in range(rows)]
dp = [[[0 for _ in range(rows)] for _ in range(rows)] for _ in range(rows + cols - 1)]

for i in range(1, rows + cols - 1):
    for j in range(rows):
        for k in range(rows):
            temp_0, temp_1 = i - j, i - k
            if 0 <= temp_0 < cols and 0 <= temp_1 < cols:
                temp = students[j][temp_0] + students[k][temp_1] if j != k else students[j][temp_0]
                dp[i][j][k] = max(dp[i - 1][j][k], dp[i - 1][j - 1][k - 1],
                                  dp[i - 1][j][k - 1], dp[i - 1][j - 1][k]) + temp
print(dp[-1][-1][-1])


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区