标签:scanf amp com bsp nbsp code 范围 ace namespace
暴力水过系列
数据范围这么小,就打暴力吧
枚举最大公共子矩阵的边长O(n)
枚举两个最大公共子矩阵的左上角O(n^4)
判断是否相同O(n^2)
总复杂度O(n^7),显然过不了
过不了怎么办,删冗余枚举啊
一堆优化:
1,倒序枚举边长,一旦满足,即为答案
2,判断是否相同,一旦不同,跳出去
然后就过了
#include<iostream> #include<cstdio> using namespace std; int a[2][60][60],n,ans; int main() { scanf("%d",&n); for(int i=0;i<2;i++) for(int j=1;j<=n;j++) for(int k=1;k<=n;k++) scanf("%d",&a[i][j][k]); for(int l=n;l>=1;l--) for(int x1=1;x1<=n-l+1;x1++) for(int y1=1;y1<=n-l+1;y1++) for(int x2=1;x2<=n-l+1;x2++) for(int y2=1;y2<=n-l+1;y2++) { bool p=0; for(int x=0;x<l;x++) { for(int y=0;y<l;y++) { if(a[0][x1+x][y1+y]!=a[1][x2+x][y2+y]) p=1; if(p) break; } if(p) break; } if(!p) { printf("%d\n",l); return 0; } } return 0; }
标签:scanf amp com bsp nbsp code 范围 ace namespace
原文地址:https://www.cnblogs.com/ivanovcraft/p/9737561.html