📄 soj3112三维最大字段和.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 + -