您的位置:首页 > 其它

动态规划最大子矩阵

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
最好备注一下要干什么,谢谢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: