首页 > 其他 > 详细

URAL 1146 Maximum Sum & HDU 1081 To The Max (DP)

时间:2014-04-07 02:37:13      阅读:525      评论:0      收藏:0      [点我收藏+]

点我看题目

题意 : 给你一个n*n的矩阵,让你找一个子矩阵要求和最大。

思路 : 这个题都看了好多天了,一直不会做,今天娅楠美女给讲了,要转化成一维的,也就是说每一列存的是前几列的和,也就是说

 0 -2 -7 0
9 2 -6 2
-4 1 -4 1
-1 8 0 -2

处理后就是:
0  -2  -9  -9
9   11  5   7
-4 -3  -7  -6
-1  7   7   5

bubuko.com,布布扣
bubuko.com,布布扣
 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <string.h>
 4 
 5 using namespace std;
 6 
 7 int sum[110][110] ;
 8 int main()
 9 {
10     int n ,m;
11     while(~scanf("%d",&n))
12     {
13         memset(sum,0,sizeof(sum)) ;
14         for(int i = 1 ; i <= n ; i++)
15         {
16             for(int j = 1 ; j <= n ; j++)
17             {
18                 scanf("%d",&m) ;
19                 sum[i][j] = sum[i-1][j]+m ;
20             }
21         }
22         int ans = -9999999 ;
23         for(int i = 1 ; i <= n ; i++ )
24             for(int j = i ; j <= n ; j++)
25             {
26                 int cnt = 0 ;
27                 for(int k = 1 ; k <= n ; k ++)
28                 {
29                     cnt += sum[j][k]-sum[i-1][k] ;
30                     ans = max(cnt,ans) ;
31                     if(cnt < 0) cnt = 0 ;
32                 }
33             }
34         printf("%d",ans) ;
35     }
36     return 0;
37 }
View Code
bubuko.com,布布扣

 

URAL 1146 Maximum Sum & HDU 1081 To The Max (DP),布布扣,bubuko.com

URAL 1146 Maximum Sum & HDU 1081 To The Max (DP)

原文:http://www.cnblogs.com/luyingfeng/p/3649205.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!