为了账号安全,请及时绑定邮箱和手机立即绑定

动态规划——最大子矩阵(hdu1081)

标签:
算法

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=1087


题目描述:

在一个给定的大矩阵中找一个小型的矩阵,使这个矩阵中的元素和最大


解题思路:

这道题与之前所做的最大字段和逻辑上大概一致,把一维扩展到了二维。先求出每一行,每一项,

前n项和纵向和横向的思路一样


#include<stdio.h>int main (){int map[105][105];int sum,max,i,j,k,ii,jj,s,n;while(scanf("%d",&n)!=EOF){   	if(n<1)   	break;for(i=1;i<=n;i++)for(j=1;j<=n;j++)scanf("%d",&map[i][j]);sum=max=0;for(i=1;i<=n;i++)for(j=i;j<=n;j++){      	sum=0;for(k=1;k<=n;k++){          	s=0;for(ii=i;ii<=j;ii++)  //从第i行不断往下在i到j列找到某一段矩阵得到最大值s+=map[k][ii];sum+=s;if(sum<0)sum=0;if(max<sum)max=sum;}}printf("%d\n",max);}return 0;}


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消