返回一个二维整数数组中最大子数组的和

 #include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main ()
{
    int a [5] [5];
    int b,i,c,d;
    int m=0;
    int sum[100];
    int max=0;
    for( i=0;i<5;i++)
    {
        for(b=0;b<5;b++)
        {
             scanf("%d  ",&a[i][b]);
             printf("\n");
        }
    }
    for(i=0;i<5;i++)
    {
        for(b=0;b<5;b++)
        {
        printf("%d   ",a[i][b]);
        }
        printf("\n");
    }
    c=a[0][0];
    for(i=0;i<5;i++)
    {
        while(m+i<5)
        {
            for(b=0;b<5;b++)
            {
                sum[b]=sum[b]+a[m+i][b];
            }
            max=0;
            for(b=0;b<5;b++)
            {
                if(max+sum[b]>sum[b])
                {
                max=max+sum[b];
                }
                else
                {
                max=sum[b];
                }
                if(max>c)
                {
                    c=max;
                }
            }
            m++;
        }
        m=0;
        for(b=0;b<5;b++)
        {
            sum[b]=0;
        }
    }
   
    printf("\n");
    printf("%d",c);
    return 0;

posted @ 2019-01-10 22:26  言宇  阅读(82)  评论(0编辑  收藏  举报