其实后面两题就是说同一样东西,只是第三题还要在第二题的基础上变通一下[如果长和宽分别为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编辑过]