C语言:n*n矩阵中i*i矩阵的最大值

来源:百度知道 编辑:UC知道 时间:2024/07/03 13:26:16
#include <stdio.h>
#define N 3
main()
{
int n;
int i1,i2,j1,j2,t1,t2,i,j;
int num[N][N];
int sum=0,max=0;
puts("int the numbers:");
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&num[i][j]);
for(i1=0;i1<N-1;i1++)
{
for(i2=i1+1;i2<N;i2++)
{
for(j1=0;j1<N-1;j1++)
{
for(j2=j1+1;j2<N;j2++)
{
if((i2-i1)==(j2-j1))
{
sum=0;
for(;i1<=i2;i1++)
{
for(j1=j1;j1<=j2;j1++)
{
sum=sum+num[i][j];
}
}
if(sum>max)max=sum;
}
}
}
}
}
printf("max=%d",max);
}

n*n矩阵,可划分出的i*i矩阵,求最大的和。我这样写哪里有问题了?麻烦帮我看一下,我是设置了四个量i1,i2,j1,j2分别代表行起始和结束的位置,及列起始和结束的位置,但是,我这样写完了结果不对。麻烦帮我看一下啊,谢谢了。

#include <stdio.h>
#define N 3
main()
{
int n;
int i1,i2,j1,j2,t1,t2,i,j;
int num[N][N];
int sum=0,max=0;
puts("int the numbers:");
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&num[i][j]);
for(i1=0;i1<N-1;i1++)
{
for(i2=i1+1;i2<N;i2++)
{
for(j1=0;j1<N-1;j1++)
{
for(j2=j1+1;j2<N;j2++)
{
if((i2-i1)==(j2-j1))
{
sum=0;
for(;i1<=i2;i1++)
{
for(j1=j1;j1<=j2;j1++)
{
sum=sum+num[i][j];
}
}
if(sum>max)max=sum;
}
}
}
}
}
printf("max=%d",max);
}

n*n矩阵,可划分出的i*i矩阵,求最大的和。
没问题