解题思路:
我们需要额外设立一个二维数组来存放每一列数组的和如下所示:

比如先假设一个二位数组:

1 2 3

4 5 6

7 8 9

那么这个额外的数组就应该是:

1 2 3

5 7 9

12 15 18

代码实现:

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

for(m=1;m<=k;m++){

if(n==1){

b[n][m]=a[n][m];

continue;

}

b[n][m]=b[n-1][m]+a[n][m]; 

}

}

最后用最大段子和思想把>0的留下,小于0的去除在进行比较即可。

注意事项:

参考代码:

#include<stdio.h>

int main(){

int j,k,n,m,a[1000][1000],b[1000][1000];

scanf("%d %d",&j,&k);

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

for(m=1;m<=k;m++){

scanf("%d",&a[n][m]);

}

}

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

for(m=1;m<=k;m++){

if(n==1){

b[n][m]=a[n][m];

continue;

}

b[n][m]=b[n-1][m]+a[n][m]; 

}

}

int max=0,sum=0,z,temp=-99999;

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

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

for(z=1;z<=k;z++){

sum=b[m][z]-b[n-1][z];

if(temp>=0){

temp=temp+sum;

if(temp>max) max=temp;

}

else if(temp<0){

temp=sum;

if(temp>max) max=temp;

}

}

temp=0;

}

}

printf("%d",max);

return 0;

}


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论