龙口经济开发区驻地 16706465631 jiuyouhui@j90001.com

新闻动态

游戏规则观察课:地图矩形统计的二维累计表——六列五行资源图的十次框选(练习22)

2026-10-28

查看某块地图中资源数量时,可以逐格相加,也可以先建立累计表,再用几次加减得到矩形总量。理解重复计算的重叠区域,有助于排查框选统计多算或少算一行的问题。

下面使用独立的一组输入,逐步记录规则如何产生结果。建议先自行推演,再寻找与记录第一次不同的位置;检查时间单位、端点归属和处理顺序。所有约定均限定在本例中,其他作品采用不同实现并不自动意味着出错。

本例约定与输入

格子数值是非负整数,累计表额外带一行一列零边界;查询矩形采用左上包含、右下排除的坐标范围。用右下累计减去上方和左方,再加回两者的重叠。

地图6列5行,数值如下 [5, 1, 9, 3, 0, 2] [7, 2, 3, 4, 2, 6] [7, 6, 6, 0, 3, 3] [9, 2, 5, 4, 1, 6] [1, 2, 9, 9, 2, 9] 查询[x1,y1,x2,y2]:[[0, 0, 6, 5], [0, 0, 1, 1], [5, 4, 6, 5], [3, 1, 6, 4], [3, 3, 5, 5], [5, 2, 6, 3], [5, 1, 6, 4], [3, 1, 6, 3], [5, 1, 6, 3], [5, 2, 6, 4]]

过程与结果

原图第0行[5, 1, 9, 3, 0, 2],累计表对应第1行[0, 5, 6, 15, 18, 18, 20];左侧零边界保留。

原图第1行[7, 2, 3, 4, 2, 6],累计表对应第2行[0, 12, 15, 27, 34, 36, 44];左侧零边界保留。

原图第2行[7, 6, 6, 0, 3, 3],累计表对应第3行[0, 19, 28, 46, 53, 58, 69];左侧零边界保留。

原图第3行[9, 2, 5, 4, 1, 6],累计表对应第4行[0, 28, 39, 62, 73, 79, 96];左侧零边界保留。

原图第4行[1, 2, 9, 9, 2, 9],累计表对应第5行[0, 29, 42, 74, 94, 102, 128];左侧零边界保留。

矩形[0,6)×[0,5):128-0-0+0=128,范围内有30格。

矩形[0,1)×[0,1):5-0-0+0=5,范围内有1格。

矩形[5,6)×[4,5):128-96-102+79=9,范围内有1格。

矩形[3,6)×[1,4):96-20-62+15=29,范围内有9格。

矩形[3,5)×[3,5):102-58-74+46=16,范围内有4格。

矩形[5,6)×[2,3):69-44-58+36=3,范围内有1格。

矩形[5,6)×[1,4):96-20-79+18=15,范围内有3格。

矩形[3,6)×[1,3):69-20-46+15=18,范围内有6格。

矩形[5,6)×[1,3):69-20-58+18=9,范围内有2格。

矩形[5,6)×[2,4):96-44-79+36=9,范围内有2格。

十次统计结果为[128, 5, 9, 29, 16, 3, 15, 18, 9, 9];第一次整图总量128。

如何独立复核

对每个查询直接枚举矩形内的原始格子求和,与累计表四项计算比较。单格、整图和靠边矩形尤其适合检查坐标约定,不要把排除式右下角当作最后一个格子的坐标。

累计表适合原图暂时不变时反复查询。原始格子发生变化以后,旧表就不再对应新数据;本例不讨论动态更新结构,也不能因为查询公式正确就忽略表的生成时机。

测试时保留原始数据与中间状态,再只改变一个条件作比较。先检查空状态、相等边界、重复输入和最后一步,再比较整体结果;不要为了让最后的数字相同而跳过前面已经出现的差异。明确规则后,复核才有可以重复的依据。