1,分析:
这个题其实就是最大子矩阵,只不过把0的权设为1,其他的权设为负无穷,这样求出来的肯定是最大的全是0的矩阵,仔细看一下我得做法,用的是动态规划。
2,实例代码:
#include <cstdio>
const int Max_Int = 0xfffffff;
int map[301][301],opt[301];
int n, m, maxn;
void init( )
{
int i, j, t;
scanf("%d%d", &n, &m);
for ( i = 0; i < n; i++ )
for ( j = 0; j < m; j++ )
{
scanf("%d", &t);
if ( t == 0 )
map[i][j] = 1;
else
map[i][j] = -Max_Int;
}
maxn = 0;
}
void work( )
{
int i, j, k, t;
for (i = 0; i < n; i++)
{
for (j = i; j < n; j++)
{
t = 0;
for ( k = 0; k < m; k++ )
{
if (j == i)
opt[k] = map[i][k];
else
opt[k] += map[j][k];
t += opt[k];
if (t < 0)
t = 0;
if (maxn < t)
maxn = t;
}
}
}
}
void print( )
{
printf("%d", maxn);
}
int main( )
{
init( );
work( );
print( );
return 0;
}
分享到:
相关推荐
从键盘输入一个3*3的矩阵,要求:输出此矩阵对应的转置矩阵(所谓转置,指的是对任意元素Pi,j和对应的Pj,i交换)。
输入任意行列数的矩阵,通过遍历半上三角形循环 来转换矩阵 运行界面很直观看出结果 原矩阵和转换之后的矩阵
本文将详细介绍如何在ARM微处理器上,利用uC/OS-II实时操作系统实现一个M*N矩阵键盘模块,并进行Proteus仿真实现。我们将探讨矩阵键盘的工作原理、uC/OS-II任务调度以及Proteus仿真工具的使用。 首先,矩阵键盘的...
请设计算法完成螺旋阵的输出,具有要求为:输入一个m行n列的矩阵,按顺时针螺旋顺序输出矩阵中的所有元素。 【输入】 第1行输入两个正整数m和n,表示m行n列的矩阵; 从第2行开始按行输入该矩阵的所有元素。 【输出】...
如输入n=3,m=4,则输出 1 2 3 4 10 11 12 5 9 8 7 6 输入n=4,m=5,则输出 1 2 3 4 5 14 15 16 17 6 13 20 19 18 7 12 11 10 9 8 输入n=4,m=4,则输出 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7
P省感染分布情况地图是一个N*M的矩形,地图上的每个点有三种状态未感染、被感染和被保护,分别用大写字母O,X,P表示,实现输入一个地图和经历的病毒周期数,推算出经历了这些病毒周期后的新地图
矩阵相乘的算法比较简单,输入一个m*n矩阵和一个n*p矩阵,结果必然是m*p矩阵,有m*p个元素,每个元素都需要计算,可以使用m*p嵌套循环进行计算。 根据矩阵乘法公式: 可以用循环直接套用上面的公式计算每个元素。...
矩阵相乘最重要的方法是一般矩阵乘积。...一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。由于它把许多数据紧凑地集中到了一起,所以有时候可以简便地表示一些复杂的模型,如电力系统网络模型。 [2]
从文件arr.in中读入一个m行k列的整数矩阵a和一个k行n列的整数矩阵b(1 < m, k, n ),在标准输出上输出这两个矩阵的乘积。 【输入形式】 输入文件arr.in中有m + k + 1行,前m行是矩阵a的元素aij,第m + 1行是空行...
实现由外向内螺旋矩阵的操作 矩阵大小为M*N 实现方法为递归调用 有完整注释,看起来比较轻松
2. **初始化结果矩阵**:根据给定的N和M,创建一个新的N行M列的矩阵,用于存储两矩阵相加的结果。 3. **逐元素相加**:遍历两个输入矩阵的每个元素,对应位置的元素相加,然后将结果存入结果矩阵的相应位置。例如,...
定义一个一维整形数组num[50],输入正整数m、n(2≤m≤n≤7),输入一个m*n整形矩阵(值小于100),编写函数place()完成矩阵元素S型放置,从小到大排列,使用指针完成地址传递,主函数完成数组输入和输出。...
D=A×B=(dij)m×q,其中dij=∑aik×bkj,k=12……n⑺ 设计一个菜单,具有求矩阵的转置、求矩阵的和、求矩阵的积、退出等基本的功能。在求矩阵的和或求矩阵的积时要求能够先提示输入两个矩阵的,然后再进行相应的操作...
螺旋矩阵是指一个n×n的矩阵,其中的数字按照从外向内、顺时针方向螺旋填充。例如,一个3×3的螺旋矩阵可能如下所示: ``` 1 2 3 8 9 4 7 6 5 ``` ### 算法实现逻辑 生成螺旋矩阵的关键在于确定填充元素的顺序。...
例如,对于三个矩阵A、B、C,如果A是一个10×100的矩阵,B是一个100×5的矩阵,C是一个5×50的矩阵,则(A×B)×C需要的乘法次数为10×100×5 + 10×5×50 = 7500,而A×(B×C)需要的乘法次数为100×5×50 + 10×100...
【输入形式】在屏幕上输入第1个矩阵的行数和第1个矩阵到第n个矩阵的列数,各数间都以一个空格分隔。 【输出形式】矩阵m,其中m(i,j)中存放的是:计算A[i:j](其中1<=i<=j<=n)所需的最少数乘次数。 矩阵s,其中s[i]...
本例中,我们首先定义了一个固定大小的矩阵(这里设为10x10),然后根据用户输入的行数m和列数n来生成螺旋矩阵。接下来,我们将逐步解析代码中的关键部分,并解释其实现逻辑。 #### C语言螺旋矩阵实现详解 1. **...
这些题目涵盖了计算机科学基础的多个领域,包括算法设计、数据结构、输入输出处理、字符串操作、数学计算以及简单的逻辑判断。下面将逐一解析这些知识点: 1. **最大公约数(GCD)和最小公倍数(LCM)**:这是基本...
矩阵逆矩阵是线性代数中一个非常重要的概念,它是矩阵乘法的逆操作,即矩阵A的逆矩阵B满足AB=BA=E,其中E是单位矩阵。矩阵逆矩阵的求解是线性代数中一个基本问题,它有很多实际应用,如线性方程组的解、矩阵分解、...
对于一个m×n矩阵A,其转置矩阵\( A^T \)的维度为n×m,计算规则为: \[ (A^T)_{ij} = A_{ji} \] 在提供的代码片段中,虽然没有直接给出转置函数的实现,但根据描述可知,可以通过类似的方法实现矩阵转置。即读取...