动态规划最大子矩阵
2018-03-10 10:18
120 查看
上了初中以后就不怎么学信息了,导致现在变得特别弱
初一下新学期我再重新开始,到信息学奥赛一本通的网站上做题。
做了几道DP,发现不会最大子矩阵了aaa
网上搜到了解体报告,发一下程序吧...
点击打开原文链接
代码:#include <iostream>
#include <cstring>
using namespace std;
int maxsub(int a[],int n)
{
int i,max=0,b=0;
for(i=0;i<n;i++)
{
if(b > 0)
b += a[i];
else
b = a[i];//负的就略过
if(b > max)
max = b;
}
return max;
}
int main()
{
int n,i,j,k,maxsubrec,maxsubarr;
int dp[101][101],arr[101];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>dp[i][j];
maxsubrec = 0;
for(i=0;i<n;i++)
{
memset(arr,0,sizeof(arr));
for(j=i;j<n;j++)
{
for(k=0;k<n;k++)
arr[k] += dp[j][k];
maxsubarr = maxsub(arr,n);
if(maxsubarr > maxsubrec) maxsubrec = maxsubarr;
}
}
cout<<maxsubrec<<endl;
ewruen 0;
}就到这里,谢谢!
有建议或意见的话加我QQ:1307924887
最好备注一下要干什么,谢谢
初一下新学期我再重新开始,到信息学奥赛一本通的网站上做题。
做了几道DP,发现不会最大子矩阵了aaa
网上搜到了解体报告,发一下程序吧...
点击打开原文链接
代码:#include <iostream>
#include <cstring>
using namespace std;
int maxsub(int a[],int n)
{
int i,max=0,b=0;
for(i=0;i<n;i++)
{
if(b > 0)
b += a[i];
else
b = a[i];//负的就略过
if(b > max)
max = b;
}
return max;
}
int main()
{
int n,i,j,k,maxsubrec,maxsubarr;
int dp[101][101],arr[101];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>dp[i][j];
maxsubrec = 0;
for(i=0;i<n;i++)
{
memset(arr,0,sizeof(arr));
for(j=i;j<n;j++)
{
for(k=0;k<n;k++)
arr[k] += dp[j][k];
maxsubarr = maxsub(arr,n);
if(maxsubarr > maxsubrec) maxsubrec = maxsubarr;
}
}
cout<<maxsubrec<<endl;
ewruen 0;
}就到这里,谢谢!
有建议或意见的话加我QQ:1307924887
最好备注一下要干什么,谢谢
相关文章推荐
- HUD 1003/HDU 1081:动态规划之最大子序列和+最大矩阵和
- 动态规划——寻找子矩阵最大和
- 动态规划-面积最大的全1子矩阵
- 动态规划求解矩阵累计和最大的路径
- 动态规划——寻找子矩阵最大和
- 动态规划——寻找子矩阵最大和
- HDU 1505(City Game)动态规划-最大矩阵
- 动态规划——寻找子矩阵最大和
- 动态规划之最大矩阵路径
- 动态规划入门——最大子矩阵
- 动态规划——寻找子矩阵最大和
- 动态规划——寻找子矩阵最大和
- 动态规划--最大子段和升级 最大矩阵和 hd1081
- 动态规划——寻找子矩阵最大和
- 动态规划——寻找子矩阵最大和
- 动态规划——寻找子矩阵最大和
- 动态规划——寻找子矩阵最大和
- 动态规划——寻找子矩阵最大和
- 动态规划——寻找子矩阵最大和
- 动态规划——F 最大矩阵和