设为首页 加入收藏

TOP

UVA10827 - Maximum sum on a torus
2015-07-20 17:53:26 来源: 作者: 【 】 浏览:1
Tags:UVA10827 Maximum sum torus

题目链接


题意:给出一个环形矩阵,也就是第一行和最后一行是相连的,第一列和最后一列是相连的,求最大的子矩阵的和

思路:只要将矩阵复制四个,那么就可以按照求一个矩阵内最大子矩阵之和的做法去做,即枚举所有子矩阵的和,更新最大值。要注意在转换后的大矩阵,枚举的子矩阵规格是有范围的。

代码:

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       using namespace std; const int INF = 0x3f3f3f3f; const int MAXN = 205; int arr[MAXN][MAXN], sum[MAXN]; int n, Max; int deal() { int temp; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { memset(sum, 0, sizeof(sum)); for (int k = i; k < i + n; k++) { temp = 0; for (int l = j; l < j + n; l++) { sum[l] += arr[k][l]; temp += sum[l]; if (Max < temp) Max = temp; } } } } return Max; } int main() { int cas; scanf("%d", &cas); while (cas--) { scanf("%d", &n); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { scanf("%d", &arr[i][j]); arr[i][j + n] = arr[i + n][j] = arr[i + n][j + n] = arr[i][j]; } } Max = -INF; int ans = deal(); printf("%d\n", ans); } return 0; }
     
    
   
  


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇ZOJ 3156 Taxi (二分匹配+二分查.. 下一篇POJ 3085 Quick Change (贪心)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: