• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > HDU1081To The Max

HDU1081To The Max

作者:wlxsq的专栏 字体:[增加 减小] 来源:互联网 时间:2017-09-06

wlxsq的专栏通过本文主要向大家介绍了skin to the max,m.c the max李秀,ski to the max,mc the max,the max等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1081

 

/*
    将维度合成一列
*/
#include<bits/stdc++.h>
using namespace std;
const int N=1050;
int dp[N][N];   //  dp[i][j]表示从dp[1][j]~dp[i][j]的和
int a[N][N];
int t[N];
int ss,ee;
int MaxSum(int *a,int n)
{
    int s;
    int Max=0,sum=0;
    for(int i=1;i<=n;i++){
        if(sum>0){
            sum+=a[i];
        }else{
            s=i;
            sum=a[i];
        }
        if(sum>Max){
            Max=sum;
            ss=s;
            ee=i;
        }
    }
    return Max;
}
int main()
{
    int n;
    while(cin>>n){
        memset(dp,0,sizeof(dp));
        memset(t,0,sizeof(t));
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                cin>>a[i][j];
                dp[i][j]=dp[i-1][j]+a[i][j];
            }
        }
        int Max=0;
        int x,y,S,T;    //  开始行,宽度,开始结束位置
        for(int i=1;i<=n;i++){              //  枚举行的起点
            for(int j=1;j<=n-i+1;j++){      //  枚举宽度
                for(int k=1;k<=n;k++){      //  枚举列,将二维整合成一维
                    t[k]=(dp[i+j-1][k]-dp[i-1][k]);
                }
                int tmp=MaxSum(t,n);
                if(tmp>Max){
                    Max=tmp;
                    x=i;
                    y=j;
                    S=ss;
                    T=ee;
                }
            }
        }
        cout<<Max<<endl;
    //    for(int i=x;i<=x+y-1;i++){
    //        for(int j=S;j<=T;j++){
    //            cout<<a[i][j]<<' ';
    //        }
    //        cout<<endl;
    //    }
    }
    return 0;
}

 

 

 

 

 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • HDU1081To The Max

相关文章

  • 2017-05-28VC下通过系统快照实现进程管理的方法
  • 2017-05-28浅谈c和c++的某些小区别
  • 2022-04-30什么是工程/项目?
  • 2017-05-28C++如何实现简单的计时器详解
  • 2017-05-28C++ 中的Lambda表达式写法
  • 2017-05-28C和指针小结(推荐)
  • 2017-05-28C++获取zip文件列表方法
  • 2017-05-28简单解读C++中的虚函数
  • 2017-05-28c++11新增的便利算法实例分析
  • 2017-05-28浅谈c++中的输入输出方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 详解C++中二进制求补运算符与下标运算符的用法
    • C语言fopen函数的用法,C语言打开文件详解
    • 解析如何用指针实现整型数据的加法
    • 讲解C语言编程中指针赋值的入门实例
    • 详解C++中的函数调用和下标以及成员访问运算符的重载
    • 浅析多维数组的下标重载
    • c语言实现二叉查找树实例方法
    • 详解C语言中strcpy()函数与strncpy()函数的使用
    • C++ 简单实现MFC ListControl 点击列头排序
    • C语言中正切的相关函数总结

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有