您的位置:首页 > 其它

动态规划练习一—2最大子矩阵

2017-04-17 21:21 211 查看
1、题意:对于给予的矩阵,输出其子矩阵中最大的和

2、思路:先确定行数,再将选中行的所有列的和分别储存起来,在寻找此序列的最大连续字段和。比较保存最大值。

3、感想:此题上课老师也讲过,新的思路,解两个自变量的最大值,先确定其中一个,再计算另一个。

4、代码:

#include<bits/stdc++.h>
using namespace std;
int f(int b[101],int
n)
{

    int i,max=0,s=0;

    for(i=0;i<n;i++)

    {if(s>0) s+=b[i];

    else s=b[i];

    if(max<s) max=s;

    }

    return max;
}
int main()
{

    int a[101][101],b[101],i,n,j,max=0,s,k;

    scanf("%d",&n);

    for(i=0;i<n;i++)

    for(j=0;j<n;j++)

    scanf("%d",&a[i][j]);

    for(i=0;i<n;i++)

    {

        for(j=0;j<n;j++)

        b[j]=0;

        for(j=i;j<n;j++)

        {for(k=0;k<n;k++)

        b[k]+=a[j][k];

        s=f(b,n);

        if(max<s) max=s;

        }}

        cout<<max<<endl;

        return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: