UVA 10827(环面部分数组和最大值)
来源:互联网 发布:caffe softmax 编辑:程序博客网 时间:2024/04/30 02:01
思路
1,枚举每个开始的左上角的坐标,然后枚举矩形的长和宽,用数组来记录每一列的前n行和,这个数组可以是二维的,也可以是一维,用滚动来实现。用sum[i]来记录前n列和,更新ans,即可。
2,枚举矩形的上下界限,将二维数组降为一维数组的连续子序列的最大值。dp一下就可以了。
思路一代码
#include <bits/stdc++.h>using namespace std;int a[160][160];int lie[160], sum[160];int main(){ //freopen("in.txt","r",stdin); int t; cin >> t; while(t--) { int n; cin >> n; for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) { cin >> a[i][j]; a[i+n][j] = a[i+n][j+n] = a[i][j+n] = a[i][j]; } long long ans = -1e7; for(int x = 0; x < n; x++) for(int y = 0; y < n; y++) for(int j = 0; j < n; j++) for(int i = 0; i < n; i++) { lie[i]=a[x+i][y+j]; if(i) lie[i]+=lie[i-1]; if(j) sum[i]+=lie[i]; else sum[i]=lie[i]; if(ans<sum[i]) ans=sum[i]; } cout << ans << endl; } return 0;}
0 0
- UVA 10827(环面部分数组和最大值)
- C++编程(数组) 去除最大值和最小值,评委的平均分。
- 分治理法求数组最大值
- 子数组和最大值
- Array Partition I,数组分对中最小值的和最大值
- 求数组中的最大值和次最大值、、、
- 子数组连续和最大值
- 子数组和的最大值
- 数组元素最大值和最小值
- 连续数组和的最大值
- 数组获取最大值和最小值
- 寻找数组中的最大值和最小值(编程之美2.10,包括最大值和次大值)
- 面部和手势提取
- (1.5.2.9)寻找数组的最大值和最小值
- 【分治法】求数组最大值和最小值(js版)
- 编程之美之子数组和的最大值(二维)
- 栈和队列(7)-- 生成窗口最大值数组
- 数组中子数组和的最大值
- 108. Convert Sorted Array to Binary Search Tree
- char、varchar、text、ntext、bigint、int、smallint、tinyint和bit的区别及数据库的数据类型
- 负载均衡
- 在iOS开发中如何调试程序
- java四种内部类详解
- UVA 10827(环面部分数组和最大值)
- 代理
- 输入一个整型变量,求它二进制位中含有1的个数
- 查找(一)史上最简单清晰的红黑树讲解
- listview分页加载
- MDK+STM32F4xx - 函数局部变量,数组与指针
- 最大的矩形
- void*之阴沟里翻船
- leetcode155: Min Stack