`
kmplayer
  • 浏览: 497200 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

输入是一个n*m的矩阵,要求找到其中最大的全0字矩阵

阅读更多
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;
}
分享到:
评论

相关推荐

    n*n矩阵行列转换

    输入任意行列数的矩阵,通过遍历半上三角形循环 来转换矩阵 运行界面很直观看出结果 原矩阵和转换之后的矩阵

    螺旋阵,请设计算法完成螺旋阵的输出,具有要求为:输入一个m行n列的矩阵,按顺时针螺旋顺序输出矩阵中的所有元素

    请设计算法完成螺旋阵的输出,具有要求为:输入一个m行n列的矩阵,按顺时针螺旋顺序输出矩阵中的所有元素。 【输入】 第1行输入两个正整数m和n,表示m行n列的矩阵; 从第2行开始按行输入该矩阵的所有元素。 【输出】...

    输出任意n*m阶的螺旋矩阵

    如输入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

    字符串问题,M*N矩阵实现

    P省感染分布情况地图是一个N*M的矩形,地图上的每个点有三种状态未感染、被感染和被保护,分别用大写字母O,X,P表示,实现输入一个地图和经历的病毒周期数,推算出经历了这些病毒周期后的新地图

    juzhenxiangcheng.rar_M?n_nested arrays_矩阵嵌套

    矩阵相乘的算法比较简单,输入一个m*n矩阵和一个n*p矩阵,结果必然是m*p矩阵,有m*p个元素,每个元素都需要计算,可以使用m*p嵌套循环进行计算。 根据矩阵乘法公式: 可以用循环直接套用上面的公式计算每个元素。...

    矩阵乘法源代码及思路.txt

    矩阵相乘最重要的方法是一般矩阵乘积。...一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。由于它把许多数据紧凑地集中到了一起,所以有时候可以简便地表示一些复杂的模型,如电力系统网络模型。 [2]

    C语言矩阵乘法A

    从文件arr.in中读入一个m行k列的整数矩阵a和一个k行n列的整数矩阵b(1 &lt; m, k, n ),在标准输出上输出这两个矩阵的乘积。 【输入形式】 输入文件arr.in中有m + k + 1行,前m行是矩阵a的元素aij,第m + 1行是空行...

    螺旋矩阵 (M*N) 由外向内输入 完整注释

    实现由外向内螺旋矩阵的操作 矩阵大小为M*N 实现方法为递归调用 有完整注释,看起来比较轻松

    元素放置(指针)XDOJ.cpp

    定义一个一维整形数组num[50],输入正整数m、n(2≤m≤n≤7),输入一个m*n整形矩阵(值小于100),编写函数place()完成矩阵元素S型放置,从小到大排列,使用指针完成地址传递,主函数完成数组输入和输出。...

    python矩阵连乘(动态规划)

    【输入形式】在屏幕上输入第1个矩阵的行数和第1个矩阵到第n个矩阵的列数,各数间都以一个空格分隔。 【输出形式】矩阵m,其中m(i,j)中存放的是:计算A[i:j](其中1&lt;=i&lt;=j&lt;=n)所需的最少数乘次数。 矩阵s,其中s[i]...

    编写一个在具有m行n列的二维数组各元素中找出最大元和最小元并显示在屏幕上的函数模板,并通过主函数对它进行调用以验证其正确性。例如,可设计该函数模板的原型为:

    编写一个在具有m行n列的二维数组各元素中找出最大元和最小元并显示在屏幕上的函数模板,并通过主函数对它进行调用以验证其正确性。例如,可设计该函数模板的原型为: template &lt;class Type&gt; void maxMin (Type *A,...

    0-1矩阵(字符串数组).cpp

    输入第一行为两个整数m和n(0&lt;=m,n)表示二维数组行数和列数,其后为m行数据,每行n个整数(0或1),输入数据中不会出现同一行有两个最长1序列的情况。 输出说明 找出每一行最长的连续1序列,输出其起始位置(从0...

    矩阵的阶数

    从键盘上输入矩阵的阶数n(n),然后按以下规律形成二维数组Anxn:A中第一行元素为1,2,……n;第二行元素为n+1,n2,……2n;第三+行元素为2n+1,2n+2,……3n;…… 然后计算:(1)A中所有不靠边元素之和sum1;(2)A...

    输入两个矩阵,计算两个矩阵相乘

    java矩阵相乘

    [python] Kmeans文本聚类算法+PAC降维+Matplotlib显示聚类图像源码

    通过scikit-learn计算文本内容的tfidf并构造N*M矩阵(N个文档 M个特征词); 2.调用scikit-learn中的K-means进行文本聚类; 3.使用PAC进行降维处理,每行文本表示成两维数据; 4.最后调用Matplotlib显示聚类效果图...

    矩阵乘法运算

    编写一个函数实现M行K列矩阵与K行N列矩阵的乘法。设A为M行K列矩阵,B为K行N列矩阵,则C=A×B,乘积C为M行N列矩阵。 (阵乘法的规则是:设A[m,k],B[k,n],则C[m,n]= A[m,k] ×B[k,n]。)   问题分析:定义两个二维...

    稀疏矩阵的相加

    已知稀疏矩阵M和矩阵N,求C=M+N。 输入有多行。分为两部分。 第一部为矩阵 M 的信息: 第一行为m1、n1、len1,表示矩阵 M 的行数、列数和非零元素的个数。 接着下来有len1行数据:每一行为矩阵元素 M 所在的行、...

    1121 计算矩阵边缘元素之和.cpp

    第一行分别为矩阵的行数m和列数n(m,n),两者之间以一个空格分开。 接下来输入的m行数据中,每行包含n个整数,整数之间以一个空格分开。 【输出】 输出对应矩阵的边缘元素和。 【输入样例】 3 3 3 4 1 3 7 1 2 ...

    矩阵运算_C++_K._矩阵_

    D=A×B=(dij)m×q,其中dij=∑aik×bkj,k=12……n⑺ 设计一个菜单,具有求矩阵的转置、求矩阵的和、求矩阵的积、退出等基本的功能。在求矩阵的和或求矩阵的积时要求能够先提示输入两个矩阵的,然后再进行相应的操作...

    输入两个正整数m和n.docx

    输入两个正整数m和n,求其最大公约数和最小公倍数。 利用辗除法。 /* * 在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到...

Global site tag (gtag.js) - Google Analytics