zoukankan      html  css  js  c++  java
  • HDU 2859

    题意略。

    思路:

    因为这个对称的矩阵是按次对角线来定义对称的,那我们只需要考虑从左下到右上的这(2 * n - 1)条对角线即可。

    在考虑待检验的矩阵由k转移到k + 1这个大小时,我们只要考虑新增的一列和新增的一行是否对称即可,如果对称,则k+1这个大小的矩阵也是对称矩阵。

    在这个过程中,采用尺取法,至于检查对称,我们暴力检查即可。

    代码附上:

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn = 1005;
    
    char matrix[maxn][maxn];
    int n;
    
    int nextpos(int up,int down){
        int x0 = up / n,y0 = up % n;
        int x1 = down / n,y1 = down % n;
        int len = (down - up) / (n - 1) + 1;
        int i;
        for(i = 0;i < len && matrix[x1 - i][y1] == matrix[x1][y1 + i];++i);
        return i == len ? -1 : down - (n - 1) * (i - 1);
    }
    
    int main(){
        while(scanf("%d",&n) == 1 && n){
            for(int i = 0;i < n;++i) scanf("%s",matrix[i]);
            int total = (n - 1)<<1,maxx = n * n - 1;
            int ans = 1;
            for(int t = 1;t < total;++t){
                for(int idx = t < n ? t : (t - n + 1) * n + (n - 1),tail = idx;idx <= maxx && tail <= maxx;tail += (n - 1)){
                    int temp = nextpos(idx,tail);
                    if(temp == -1) ans = max(ans,(tail - idx) / (n - 1) + 1);
                    else idx = temp;
                    if(idx % n == 0 || tail % n == 0) break;
                }
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    自我学习——javascript——基本技巧
    Edge Code CC卡死原因
    Django中ORM介绍和字段及字段参数
    Web框架本质及第一个Django实例
    Python连接MySQL数据库之pymysql模块使用
    Bootstrap框架
    jQuery快速入门
    前端基础之BOM和DOM
    前端基础之JavaScript
    前端基础之CSS
  • 原文地址:https://www.cnblogs.com/tiberius/p/11300465.html
Copyright © 2011-2022 走看看