学习到的处理最大子矩阵问题运用枚举的思路
2017-11-17 23:51
225 查看
最大子矩阵问题
i,j 控制纵向扩展,sum记录最大连续数组的和控制横向扩展
具体如下表示
a b c
矩阵 = d e f
g h i
i=0
j=0
k=0 1 2 矩阵为 [a,b,c],用sum记录最大连续数组并更新
j=1
k= 0 1 2 矩阵为 [a+d,b+e,c+f],用sum记录最大连续数组并更新
j=2
k=0 1 2 矩阵为[a+d+g,b+e+h,c+f+i],用sum记录最大连续数组并更新
i=1
j=1
k=0 1 2矩阵为[d,e,f],用sum记录最大连续数组并更新
j=2
k=0 1 2矩阵为[d+g,e+h,f+i],用sum记录最大连续数组并更新
i=2
j=3
k=0 1 2矩阵为[d,h,i],用sum记录最大连续数组并更新
代码如下
#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
using namespace std;
int a[130][130];
int b[130];
int main()
{
int n,maxa = -0xfffffff;
cin>>n;
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
cin>>a[i][j];
for(int i = 0; i < n; i++)
{
memset(b, 0, sizeof(b));
for(int j = i; j < n; j++)
{
int sum = 0;
for(int k = 0; k < n; k++)
{
b[k] = b[k] + a[j][k];
sum = sum + b[k];
if(sum<0) sum = 0;
maxa = max(maxa,sum);
}
}
}
cout<<maxa<<endl;
return 0;
}
i,j 控制纵向扩展,sum记录最大连续数组的和控制横向扩展
具体如下表示
a b c
矩阵 = d e f
g h i
i=0
j=0
k=0 1 2 矩阵为 [a,b,c],用sum记录最大连续数组并更新
j=1
k= 0 1 2 矩阵为 [a+d,b+e,c+f],用sum记录最大连续数组并更新
j=2
k=0 1 2 矩阵为[a+d+g,b+e+h,c+f+i],用sum记录最大连续数组并更新
i=1
j=1
k=0 1 2矩阵为[d,e,f],用sum记录最大连续数组并更新
j=2
k=0 1 2矩阵为[d+g,e+h,f+i],用sum记录最大连续数组并更新
i=2
j=3
k=0 1 2矩阵为[d,h,i],用sum记录最大连续数组并更新
代码如下
#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
using namespace std;
int a[130][130];
int b[130];
int main()
{
int n,maxa = -0xfffffff;
cin>>n;
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
cin>>a[i][j];
for(int i = 0; i < n; i++)
{
memset(b, 0, sizeof(b));
for(int j = i; j < n; j++)
{
int sum = 0;
for(int k = 0; k < n; k++)
{
b[k] = b[k] + a[j][k];
sum = sum + b[k];
if(sum<0) sum = 0;
maxa = max(maxa,sum);
}
}
}
cout<<maxa<<endl;
return 0;
}
相关文章推荐
- 深度学习----BP+SGD+激活函数+代价函数+基本问题处理思路
- 学习笔记之最大子矩阵问题
- 【转】【最大子矩阵问题】【悬线法】 学习笔记
- Silverlight3学习笔记6(Silverlight,WCF双工通信)(回调异常问题处理)
- 0-1背包问题;动态规划;时间复杂度O(n方);给出最大价值与解得情况;内有动态规划思路总结;
- 最大子矩阵问题
- 最大子序列问题及其求解----C 语言学习
- 为解决ASP.NET MVC(CTP)中URL“页面请求”和“单纯逻辑处理请求”混淆问题,提供一条思路
- 数据处理的两个基本问题01 - 零基础入门学习汇编语言38
- 数据处理的两个基本问题03 - 零基础入门学习汇编语言40
- 数据处理的两个基本问题02 - 零基础入门学习汇编语言39
- 数据处理的两个基本问题05 - 零基础入门学习汇编语言42
- 数据处理的两个基本问题05 - 零基础入门学习汇编语言42
- 约瑟夫环加强版用线段树解决m,,这类问题还可以拓展,只是一个思路,用线段树的思路要学习
- 最大子矩阵问题hdu 1081
- 最大子矩阵问题
- pku1050 最大子矩阵问题
- 动态规划解决最大子矩阵问题
- 数据处理的两个基本问题02 - 零基础入门学习汇编语言39
- PKU 1050 动态规划-解决最大子矩阵问题