Python 全 RE 什么问题?
查看原帖
Python 全 RE 什么问题?
156642
ZeroSky楼主2024/3/2 23:29
  1. 首先提交如下代码,发现所有测试点均 RE。
n, m, k = map(int, input().split())
matrix = [[0 for _ in range(m + 1)]] + [[0] + list(map(int, input().split())) for i in range(1, n + 1)]
prefix_sum = [[0] * (m + 1) for _ in range(n + 1)]

for i in range(1, n + 1):
    for j in range(1, m + 1):
        prefix_sum[i][j] = prefix_sum[i - 1][j] + matrix[i][j]

ans = 0
for i1 in range(1, n + 1):
    for i2 in range(i1, n + 1):
        j1 = 1
        num_sum = 0
        for j2 in range(1, m + 1):
            num_sum += prefix_sum[i2][j2] - prefix_sum[i1 - 1][j2]
            while num_sum > k and j1 <= j2:
                num_sum -= prefix_sum[i2][j1] - prefix_sum[i1 - 1][j1]
                j1 += 1
            ans += j2 - j1 + 1
print(ans)

  1. 于是乎,提交如下代码测试输入数据:
n, m, k = map(int, input().split())
matrix = [[0 for _ in range(m + 1)]] + [[0] + list(map(int, input().split())) for i in range(1, n + 1)]
prefix_sum = [[0] * (m + 1) for _ in range(n + 1)]

for i in range(1, n + 1):
    for j in range(1, m + 1):
        print(1)

结果显示所有测试点均为 WA,似乎并非输入数据的问题。

  1. 随后,将循环体中的部分改成前缀和的计算再次提交测试:
n, m, k = map(int, input().split())
matrix = [[0 for _ in range(m + 1)]] + [[0] + list(map(int, input().split())) for i in range(1, n + 1)]
prefix_sum = [[0] * (m + 1) for _ in range(n + 1)]

for i in range(1, n + 1):
    for j in range(1, m + 1):
        prefix_sum[i][j] = prefix_sum[i - 1][j] + matrix[i][j]

结果显示全测试点 RE。但经过分析这段代码不会导致下标越界的错误?

由此,很是疑惑到底为啥 RE 的,有大佬能帮忙解答一下吗?

2024/3/2 23:29
加载中...