http://acm.hdu.edu.cn/showproblem.php?pid=1081
矩阵压缩的题目
#include<iostream>
using namespace std;
int find(int a[],int n) //找最大子序列
{
int max=-10004;
int i,sum=0;
for(i=0;i<n;i++)
{
sum+=a[i];
if(sum>max)
max=sum;
if(sum<0)
sum=0;
}
return max;
}
int main()
{
int i,j,k,n;
int a[150][150];
while(cin>>n)
{
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>a[i][j];
int max=-184944;
for(k=0;k<n;k++){
int m=find(a[k],n);
max=max>m?max:m;
for(i=k+1;i<n;i++)
{
for(j=0;j<n;j++) //将一行压缩到第i行
{
a[k][j]+=a[i][j];
}
m=find(a[k],n);
max=max>m?max:m;
}
}
cout<<max<<endl;
}
return 0;
}
浙公网安备 33010602011771号