zoukankan      html  css  js  c++  java
  • 题目:最大加权矩形

    题目描述

    给定一个正整数n( n<=100),然后输入一个N*N矩阵。求矩阵中最大加权矩形,即矩阵的每一个元素都有一权值,权值定义在整数集上。从中找一矩形,矩形大小无限制,是其中包含的所有元素的和最大 。矩阵的每个元素属于[-127,127]
    例:
    0 –2 –7 0 在左下角: 9 2
    9 2 –6 2 -4 1
    -4 1 –4 1 -1 8
    -1 8 0 –2 和为15

    输入格式

    第一行:n,接下来是n行n列的矩阵。

    输出格式

    最大矩形(子矩阵)的和。

    题解:

    用动态规划求最大加权矩形问题。

    代码实现:

    #include<iostream>
    using namespace std;
    
    int f[101][101]={0},n;
    
    int main()
    {
        int i,j,k,l;
        cin>>n;
        for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
        cin>>f[i][j];
        
        for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
        f[i][j]+=f[i-1][j];
        
        for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
        f[i][j]+=f[i][j-1];
        
        int max=-100000;
        for(i=1;i<=n;i++)
        for(j=1;j<=i;j++)
        for(k=1;k<=n;k++)
        for(l=1;l<=k;l++)
        if(f[i][k]-f[j-1][k]-f[i][l-1]+f[j-1][l-1]>max) 
        max=f[i][k]-f[j-1][k]-f[i][l-1]+f[j-1][l-1];
        
        cout<<max<<endl;
        return 0;
        
        }
  • 相关阅读:
    收缩清空数据库
    ExecuteScalar 返回值问题
    JS“缺少标识符 字符串或数字”错误
    Access判断空字符串的SQL语句
    decimal与 float的区别
    按照特定的字符拆分字段
    php中heredoc与nowdoc的使用方法
    php 类接口继承练习
    委托
    关闭form前提示是否保存
  • 原文地址:https://www.cnblogs.com/noip/p/2324181.html
Copyright © 2011-2022 走看看