努力ing
你浪费的今天是昨天死去的人所渴望的明天!!!

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;
}

  

posted on 2013-05-19 21:58  努力ing  阅读(125)  评论(0)    收藏  举报