网络流算法实践(python):方格取数问题: 在一个有m×n个方格的棋盘中,每个方格中有一个正整数。现要从方格中取数,使任意 2 个数所在方格没有公共边,且取出的数的总和最大。试设计一个满足要求的取数算法。对于给定的方格棋盘,按照取数要求编程找出总和最大的数。 输入:第 1 行有 2 个正整数 m 和 n,分别表示棋盘的行数和列数。接下来的 m 行,每行有 n 个正整数,表示棋盘方格中的数。 输入样例: 3 3 1 2 3 3 2 3 2 3 1 输出:程序运行结束时,将取数的最大总和输出 输出样例: 11并给出问题分析、 算法描述、 输入样例、 输出样例,程序代码、 输出结果、时间复杂度分析、优化改进
时间: 2023-07-14 21:14:25 浏览: 153
问题分析:
本题是一个典型的最大权独立集问题,即在一个无向图中选取一些顶点,使得这些顶点两两不相邻,并且这些顶点的权值和最大。
算法描述:
1. 将棋盘中的每个方格看成一个顶点,并将顶点按行列顺序编号,得到一个二维坐标系。
2. 若两个顶点在坐标系中的距离为1,则这两个顶点之间有一条边。
3. 对这个无向图求解最大权独立集问题即可。
输入样例:
3 3
1 2 3
3 2 3
2 3 1
输出样例:
11
程序代码:
阅读全文