ACM之好长的系列SHD

来源:互联网 发布:网络上行链路冗余丢失 编辑:程序博客网 时间:2024/04/29 07:47

题目描述:


 相信大家都把Bosn Ma先生出的好长的序列A掉了,现在出现了更为复杂的好长的序列Super Hard版。

 我们现在又一个n*n的矩阵,矩阵的每个元素是一个不超过100的整数。比如:

 0 -2 -7 0
        9 2 -6 2
        -4 1 -4 1
        -1 8 0 -2
 现在要求大家在矩阵中找到一个小矩阵使得他们的元素之和最大。

样例中的最大值为15

 9 2
      -4 1 
     -1 8

大家记住,子阵可以为长方形~~当取1个元素最大,就是1*1子阵的。如果所有值都是负。显然一个都不能选,答案应该是0.


输入样例:


40 -2 -7 09 2 -6 2-4 1 -4 1-1 8 0 -2

输出样例:


15

输入描述:


输入一个数字N,表示输入N*N矩阵。

接下来是N*N个整型数


输出描述:


输出最大的子阵值(子阵中所有元素之和)

#include<iostream>using namespace std;int main(){  int i,k,j,n,max=0,sum=0,sum1=0;int p[21][21],data[100];while(cin>>n){for(i=0;i<n;i++){for(j=0;j<n;j++){cin>>p[i][j];//输入二维数组}}for(i=0;i<n;i++){for(k=0;k<n;k++)data[k]=0;//data[k]初始化for(j=i;j<n;j++){for(k=0;k<n;k++)data[k]+=p[j][k];//求和max=0;sum=0;for(k=0;k<n;k++){   max+=data[k];//求和if(max>sum)//找最大值{sum=max;}else if(max<0)//判断所有值是否全部是负数,是则输出0{max=0;}}if(sum>sum1){sum1=sum;}} }cout<<sum1;}return 0;}

原创粉丝点击