最大和和矩陣是最大和子段的推廣,是最大和子段推廣到二維的形式,當然我們可把二維形再轉化成一維的形式,這就是求最大和矩陣方法了!二維轉化為一維時我們直接用窮舉法!
代碼如下:
#include<stdio.h>
int MaxSum(int n,int *a)


{
int sum=0,b=0;
for(int i=1;i<=n;i++)

{
if(b>0)
b+=a[i];
else
b=a[i];
if(b>sum) sum=b;
}
return sum;
}
int MaxSum2(int m,int n,int a[][100])


{
int sum=0;
int *b=new int [n+1];
for(int i=1;i<=m;i++)

{
for(int k=1;k<=n;k++)
b[k]=0;

for(int j=i;j<=m;j++)

{
for(int k=1;k<=n;k++)

{
b[k]+=a[j][k];
int max=MaxSum(n,b);
if(max>sum)
sum=max;
}
}
}
delete b;
return sum;
}
int main()


{
int a[100][100],i,j,n,sum,m;
while(scanf("%d %d",&m,&n)!=EOF)

{
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)

{
scanf("%d",&a[i][j]);
}
sum=MaxSum2(m,n,a);
printf("%d\n",sum);
}
return 0;
}
運行結果如下:
posted on 2010-09-10 13:09
jince 閱讀(525)
評論(0) 編輯 收藏 引用 所屬分類:
算法設計與分析