其实后面两题就是说同一样东西,只是第三题还要在第二题的基础上变通一下[如果长和宽分别为N和M的话,期待时间复杂度为o(N*N*M)]
~
~[此贴子已经被作者于2018-3-28 20:49编辑过]

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
程序代码:#include <stdio.h>
int fun(int a[][100],int x,int y,int s)
{
int i,j;
for(i=0;i<x;i++)
{
for(j=0;j<y&&(x+1-i)*(y+1-j)>s;j++)
{
if(a[i][j]==a[x][y]&&a[x][j]==a[i][y])
return (x+1-i)*(y+1-j);
}
}
return s;
}
void main()
{
int n,m,i,j,s,a[100][100];
scanf("%d%d",&m,&n);
for(i=s=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d",&a[i][j]);
s=fun(a,i,j,s);
}
}
printf("%d\n",s);
}[此贴子已经被作者于2018-3-28 22:07编辑过]
~
~[此贴子已经被作者于2018-3-28 23:08编辑过]

~
程序代码:
#include <stdio.h>
static unsigned count;
int fun(int a[][100],int x,int y,int s)
{
int i,j;
for(i=0;i<x;i++)
{
for(j=0;j<y&&(x+1-i)*(y+1-j)>s;j++)
{
++count;
if(a[i][j]==a[x][y]&&a[x][j]==a[i][y])
return (x+1-i)*(y+1-j);
}
}
return s;
}
void main()
{
int n,m,i,j,s,a[100][100];
scanf("%d%d",&m,&n);
for(i=s=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d",&a[i][j]);
s=fun(a,i,j,s);
}
}
printf("%d\n",s);
printf("%u\n",count);
}
[此贴子已经被作者于2018-3-28 23:39编辑过]
