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

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
~[此贴子已经被作者于2018-3-28 20:49编辑过]

2018-03-28 20:46
程序代码:#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-03-28 22:04
~

2018-03-28 22:16
2018-03-28 22:27
~
~[此贴子已经被作者于2018-3-28 23:08编辑过]

2018-03-28 22:47
~
程序代码:
#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编辑过]

2018-03-28 23:37
~[此贴子已经被作者于2018-3-29 02:31编辑过]

2018-03-29 01:51
2018-03-29 11:45
2018-03-29 12:11
正确,其实我那代码循环嵌套4次了,就是O(N^4),傻瓜式的遍历。
2018-04-02 20:03