⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 soj3112三维最大字段和.cpp

📁 一些ACM题目的解答,主要是soj和poj的
💻 CPP
字号:
#include<stdio.h>
#include<string.h>

int c[50][50][50];

int maxArray(int n,int b[])
{
    int sum=0;
    int max=0,i=0;
    while(i<n)
    {
        if(max>0)
            max+=b[i];
        else
            max=b[i];
        if(max>sum)
            sum=max;
        i++;
    }
    return sum;
}

int maxMatrix(int m,int n,int a[][50])
{
    int sum=0;
    int temp,i,j,k;
    for(i=0;i<n;i++)
    {
        int b[50]={0};
        for(j=i;j<n;j++)
        {
            for(k=0;k<m;k++)
                b[k]+=a[k][j];
            temp=maxArray(m,b);
            if(temp>sum)
                sum=temp;
        }
    }
    return sum;
}
int maxCube(int m,int n,int p)
{
    int i,j,max=0;
    for(i=0;i<p;i++)
    {
        int a[50][50]={0};
        for(j=i;j<p;j++)
        {    
            int l,h;
            for(l=0;l<m;l++)
            {
                for(h=0;h<n;h++)
                {
                    a[l][h]+=c[l][h][j];
                }
            }
            int temp=maxMatrix(m,n,a);
            if(temp>max)
                max=temp;
        }
    }
    return max;
}

int main(void)
{
    int m,n,p,sum,i,j,k;
    while(scanf("%d%d%d",&m,&n,&p)==3)
    {
        for(i=0;i<m;i++)
        {
            for(j=0;j<n;j++)
            {
                for(k=0;k<p;k++)   
                {
                    scanf("%d",&c[i][j][k]);
                }
            }
        }
        sum=maxCube(m,n,p);
        printf("%d\n",sum);
    }
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -