回文子序列 ssl 2662 暴力

来源:互联网 发布:win10优化版 编辑:程序博客网 时间:2024/05/21 10:33

题目大意

回文序列是指左右对称的序列。例如1 2 3 2 1是回文序列,但是1 2 3 2 2就不是。我们会给定一个N×M的矩阵,你需要从这个矩阵中找出一个P×P的子矩阵,使得这个子矩阵的每一列和每一行都是回文序列。

分析

O(n^4)卡了过去,很神奇。

code

#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<algorithm>#include<queue>using namespace std;int f[500][500];int n,m;int main(){       scanf("%d%d",&n,&m);    for (int i=1;i<=n;i++)        for (int j=1;j<=m;j++)            scanf("%d",&f[i][j]);    for (int l=min(n,m);l>=1;l--)        for (int i=1;i<=n-l+1;i++)            for (int j=1;j<=m-l+1;j++)            {                int flag=1;                for (int ii=0;ii<=l-1;ii++)                {                    for (int jj=1;jj<=l/2;jj++)                        if ((f[i+ii][j+jj-1]!=f[i+ii][j+l-jj])||(f[i+jj-1][j+ii]!=f[i+l-jj][j+ii]))                        {                            flag=0;                            break;                        }                    if (!flag)                        break;                }                if (flag)                {                    printf("%d",l);                    return 0;                }            }}
0 0
原创粉丝点击