首页 > 其他 > 详细

HDU 1081 二维DP裸题

时间:2014-04-04 04:00:06      阅读:424      评论:0      收藏:0      [点我收藏+]

第一次做二维DP,1A

思路是状态压缩+枚举,压缩的方法是将第p至第q行的元素加和,然后求最大子序列和,就能得出这一情况下的最大子矩阵

然后用两层循环按行去枚举矩形,就能得出结果了。

求最大子序列和的时候要注意,子序列和并非一定>=0

上代码

bubuko.com,布布扣
 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<iostream>
 4 using namespace std;
 5 
 6 #include<math.h>
 7 #include<algorithm>
 8 
 9 #define range 110
10 int a[range][range];
11 int b[range];
12 
13 int main()
14 {
15     int n;
16     while(scanf("%d",&n) != EOF)
17     {
18         for(int i=0; i<n; ++i)
19           for(int j=0; j<n; ++j)
20           scanf("%d", &a[i][j]);
21         
22         int maxSum = a[0][0];
23         
24         for(int i=0; i<n; ++i)
25         {
26             for(int k=0; k<n; ++k)
27               b[k]=0;
28              
29             for(int j=i; j<n; ++j)
30             {
31                 int temp = -0x3f3f3f3f;    
32                 for(int k=0; k<n; ++k)
33                 {
34                     b[k] += a[j][k];
35                     if(b[k] > temp) 
36                       temp = b[k];
37                 }
38                 
39                 if(temp <= 0)
40                 {
41                   if(temp > maxSum)  
42                   maxSum = temp;
43                 }
44                 
45                 else
46                 {  
47                     int tempMax = -0x3f3f3f3f;
48                     int cur=0;
49                     for(int k=0; k<n; ++k)
50                     {
51                         cur += b[k];
52                         if(cur > tempMax)  tempMax = cur;
53                         if(cur < 0)  cur=0;
54                     }
55                 
56                     if(tempMax > maxSum)  
57                     maxSum = tempMax;
58                 }        
59             }          
60         }
61         
62         printf("%d\n", maxSum);
63     }
64     
65     return 0;    
66 }
HDU 1081

 

HDU 1081 二维DP裸题,布布扣,bubuko.com

HDU 1081 二维DP裸题

原文:http://www.cnblogs.com/overcode/p/3643249.html

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