站外题,DALAO求助,没思路
  • 板块灌水区
  • 楼主Aakw_Tea
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/7/16 10:38
  • 上次更新2024/7/16 11:32:25
查看原帖
站外题,DALAO求助,没思路
1211960
Aakw_Tea楼主2024/7/16 10:38

rt,玄关:

题目描述

一个由 n 行 m 列构成的矩阵(从上到下对行 1 到 n 编号,从左到右对列 1 到 m 编号),第 i 行第 j 列中有一个正整数 Wij。例如下面是一个 3 行 4 列的矩阵。

1523
2342
8243

现在从中选取一个 p 行 q 列的子矩阵, 例如下面黑框中选取的是一个 2 行 3 列的子矩阵

xxx3
xxx2
8243

仔细观察会发现,从上面的矩阵中选取 2 行 3 列的子矩阵共有 4 种不同的方法。 现在请你找这样一个子矩阵,满足以下条件: 将子矩阵的 q 列从左到右编号为 1 到 q,删除子矩阵中所有编号为奇数的列, 或者删除子矩阵中所有编号为偶数的列,然后 用子矩阵中剩下的数之和 减掉 子矩阵中被删除的数之和,得到一个结果 S,S 最大的子矩阵就是我们要找的子矩阵,注意,这样的子矩阵可能有多个。 例如上面黑框中的子矩阵,删除编号为奇数的列(下图 1)或删除编号为偶数的列(下图 2) 。(阴影部分为删除的列)

| | | | | :----------: | :----------: | :----------: | :----------: | | x | 1 | x | | x | 2 | x |

| | | | | :----------: | :----------: | :----------: | :----------: | | 1 | x | 3 | | 2 | x | 4 |

按照计算规则,图 1 中剩下的数之和为 8,被删除的数之和为 9,所以 S=-1,图 2 中剩下的数之和为 9,被删除的数之和为 8,所以 S=1,也就是说当选择这个子矩阵时,S 的最大值为 1。当然可以选择其他子矩阵来获取更大的 S。

输入

输入文件 matrix.in:输入从文件中读取,输入共 n+1 行。 第一行包含 4 个整数 n、m、p、q (1≤n,m≤1000,1≤p≤n,1≤q≤m),每两个整数之间用一个空格隔开。 接下来 n 行,每行包含 m 个整数。第 i+1 行的第 j 个整数为 Wij(1≤Wij≤100),表示矩阵中的第 i 行第 j 列的数,每两个整数之间用一个空格隔开。 输出

输出文件 matrix.out:结果输出到文件中。 输出共一行,包含一个整数,表示最大的 S。注意不需要输出你选择的子矩阵。

帮帮老奴吧

2024/7/16 10:38
加载中...