返回一个二维整数数组中最大子数组的和
Posted fffxf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了返回一个二维整数数组中最大子数组的和相关的知识,希望对你有一定的参考价值。
一、设计思路:
1.先定义一个2*2数组并输入。
2.再求每行中子数组的和,得到一个2*3数组。
3.求每列中子数组的和,最后得到一个3*3数组。
4.求每一列的最大值,得到3个数。
5.3个数比较得到一个最大值即最大子数组的和。
二、代码:
#include<stdio.h>
int main()
{
int a[2][2];//定义一个2*2的二维数组
int max;
int s;
int count;
int b[2][3];
int i,j;
printf("请输入二维数组:
");
for( i=0;i<2;i++)
{
for( j=0;j<2;j++)
{
scanf("%d",&a[i][j]);
}
}
for( i=0;i<2;i++)
for( j=0;j<2;j++)
printf("%d",&a[i][j]);
for(i=0;i<2;i++)
{
count=0;
for(int j=0;j<2;j++)
{
s=0;
for(int l=0;l<2-j;l++)
{
s=s+a[i][j+l];
b[i][count+l]=s;
}
count=count+2-j;
}
}
//求最大子数组的和:
int c[3][3];
for(j=0;j<3;j++)
{
count=0;
for(int i=0;i<2;i++)
{
s=0;
for(int l=0;l<2-i;l++)
{
s=s+b[i+l][j];
c[count+l][j]=s;
}
count=count+2-i;
}
}
int d,e,f;
if( c[0][0]>c[1][0]) d = c[0][0];
else d = c[1][0];
if( c[2][0]>d) d = c[2][0];
if( c[0][1]>c[1][1]) e = c[0][1];
else e = c[1][1];
if( c[2][1]>d) e = c[2][1];
if( c[0][2]>c[1][2]) f = c[0][2];
else f = c[1][2];
if( c[2][2]>d) f = c[2][2];
if( d>e) max = d;
else max = e;
if( f>max) max = f;
printf("
最大子数组和为:");
printf("%d
",max);
return 0;
}
三、运行结果:
四、psp0
以上是关于返回一个二维整数数组中最大子数组的和的主要内容,如果未能解决你的问题,请参考以下文章