刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

交叉和

有一个 h 行 w 列的网格。从上往下第 i 行、从左往右第 j 列的格子 (i, j) 中写有整数 Ai,j。对于所有格子 (i, j),请计算以下值:与格子 (i, j) 在同一行或同一列的所有格子中写的整数的总和。

时间限制:1000ms,内存限制:256MB

输入格式

第一行:两个整数 h 和 w,表示行数和列数。

接下来有 h 行:每行 w 个整数,表示 aij

输出格式

输出共 h 行,每行 w 个整数。相邻两个整数之间用单个空格隔开。


输入样例#1

3 3
1 1 1
2 2 2
3 3 3

输出样例#1

8 8 8 
10 10 10 
12 12 12

输入样例#2

2 10
3 1 4 1 5 9 2 6 5 3
5 8 9 7 9 3 2 3 8 4

输出样例#2

44 47 48 46 48 42 41 42 47 43 
61 59 62 59 63 67 60 64 63 61

数据范围:

2≤h、w≤2000,1≤ aij ≤ 99。

使用微信搜索喵呜刷题,轻松应对考试!

答案:

对于这个问题,可以使用二维数组来存储网格中的整数,并计算每一行和每一列的和。具体步骤如下:

  1. 创建一个 h 行 w 列的二维数组 grid,用于存储网格中的整数。
  2. 创建一个大小为 h 的一维数组 rowSum,用于存储每一行的和。
  3. 创建一个大小为 w 的一维数组 colSum,用于存储每一列的和。
  4. 遍历二维数组 grid,计算每一行和每一列的和,并分别存储在 rowSum 和 colSum 中。
  5. 遍历二维数组 grid,对于每个格子 (i, j),计算与它同一行或同一列的所有格子的整数总和,即 rowSum[i] + colSum[j],并将结果输出。

解析:

该题目要求计算网格中每个格子所在行和列的所有格子的整数总和。首先,我们需要读取网格的维度和每个格子中的整数,并将其存储在二维数组中。然后,我们需要计算每一行和每一列的和,以便后续计算每个格子的总和。最后,我们再次遍历网格,对于每个格子,计算其所在行和列的所有格子的整数总和,并将结果输出。

在 C 语言中,我们可以使用二维数组来存储网格中的整数,并使用循环来遍历数组并计算行和列的和。然后,我们可以使用另一个循环来遍历网格中的每个格子,并计算其所在行和列的所有格子的整数总和。最后,我们将结果输出到标准输出流中。

需要注意的是,在计算每个格子的总和时,我们需要避免重复计算当前格子中的整数。因此,在计算行和列的和时,我们需要将当前格子中的整数排除在外。另外,由于数据范围较大(h 和 w 的范围在 2 到 2000 之间),我们需要确保使用的数据类型能够容纳可能的最大值,并且需要注意内存限制(内存限制为 256MB)。

创作类型:
原创

本文链接:交叉和 有一个 h 行 w 列的网格。从上往下第 i 行、从左往右第 j 列的格子 (i, j) 中

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share