Hdu 4618 Palindrome Sub-Array
2013-07-27 13:51
369 查看
题意:给出一个n*m的矩阵,看里面能组成一p为长度的正方形,它的每一行和每一列都是回文
数据不大,直接暴搜
正方形边长最大的也只能是len=min(n,m);所以从len开始搜索,然后确定正方形左上角x y 的开始位置,往下搜
代码:
数据不大,直接暴搜
正方形边长最大的也只能是len=min(n,m);所以从len开始搜索,然后确定正方形左上角x y 的开始位置,往下搜
代码:
#include <iostream> #include <cstring> #include <map> #include <cmath> #include <stack> #include <vector> #include <algorithm> #include <stdio.h> using namespace std; const int M=50000; const int N=1e9+7; int n,m; int a[350][350]; bool is_huiw(int x,int y,int len) { for(int i=0;i<len; i++) { for(int j=0;j<=len/2;j++) { if(a[x+i][y+j]!=a[x+i][y+len-j-1]) return false; if(a[x+j][y+i]!=a[x+len-j-1][y+i]) return false; } } return true; } int main() { int t; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); for(int i=0;i<n;i++) { for(int j=0;j<m;j++) scanf("%d",&a[i][j]); } int len=min(n,m); int f=0; int ss; for(int ll=len;ll>=1;ll--) { for(int i=0;i+ll<=n;i++)//i ,j能开头的范围 { for(int j=0;j+ll<=m;j++) { if(is_huiw(i,j,ll)) { f=1; ss=ll; break; } } if(f==1) break; } if(f==1) break; } cout<<ss<<endl; } return 0; }
相关文章推荐
- HDU-4618-Palindrome Sub-Array
- HDU 4618 Palindrome Sub-Array(DP)
- hdu 4618 Palindrome Sub-Array
- HDU 4618 Palindrome Sub-Array 暴力
- HDU 4618 Palindrome Sub-Array (HASH + 枚举)
- HDU 4618 - Palindrome Sub-Array(2013MUTC2-1008)(DP)
- 2013 多校第二场 hdu 4618 Palindrome Sub-Array
- hdu 4618 Palindrome Sub-Array 多校第二场
- HDU 4618Palindrome Sub-Array(暴力枚举每一个正方形)
- HDU 4618 Palindrome Sub-Array(最大回文子矩阵)
- HDU - 4618 H - Palindrome Sub-Array
- HDU-4618 Palindrome Sub-Array 暴力枚举
- HDU 4618 - Palindrome Sub-Array(2013MUTC2-1008)(DP)
- hdu 4618 Palindrome Sub-Array(dp)
- HDU 4618 Palindrome Sub-Array 二分(奇偶)+hash判断是否对称
- HDU 4618 - Palindrome Sub-Array(2013MUTC2-1008)(DP)
- HDU 4618 Palindrome Sub-Array 解题报告
- hdu 4618 Palindrome Sub-Array
- hdu 4618 Palindrome Sub-Array(暴力啊,3级)
- HDU 4618 Palindrome Sub-Array(Manacher、二分)