zoukankan      html  css  js  c++  java
  • BZOJ 1567: [JSOI2008]Blue Mary的战役地图

    ime Limit: 10 Sec  Memory Limit: 162 MB
    Submit: 1009  Solved: 576
    [Submit][Status][Discuss]

    Description

    Blue Mary最近迷上了玩Starcraft(星际争霸) 的RPG游戏。她正在设法寻找更多的战役地图以进一步提高自己的水平。 由于Blue Mary的技术已经达到了一定的高度,因此,对于用同一种打法能够通过的战役地图,她只需要玩一张,她就能了解这一类战役的打法,然后她就没有兴趣再玩儿这一类地图了。而网上流传的地图有很多都是属于同一种打法,因此Blue Mary需要你写一个程序,来帮助她判断哪些地图是属于同一类的。 具体来说,Blue Mary已经将战役地图编码为n*n的矩阵,矩阵的每个格子里面是一个32位(有符号)正整数。对于两个矩阵,他们的相似程度定义为他们的最大公共正方形矩阵的边长。两个矩阵的相似程度越大,这两张战役地图就越有可能是属于同一类的。

    Input

    第一行包含一个正整数n。 以下n行,每行包含n个正整数,表示第一张战役地图的代表矩阵。 再以下n行,每行包含n个正整数,表示第二张战役地图的代表矩阵。

    Output

    仅包含一行。这一行仅有一个正整数,表示这两个矩阵的相似程度。

    Sample Input

    3
    1 2 3
    4 5 6
    7 8 9
    5 6 7
    8 9 1
    2 3 4

    Sample Output

    2

    HINT

    样例解释:

    子矩阵:
    5 6
    8 9
    为两个地图的最大公共矩阵

    约定:
    n<=50

    Source

    %%%社会栋

    暴力压正解

    屠龙宝刀点击就送

    #include <cstdio>
    #include <cctype>
    #include <map>
    #define N 55
    
    using namespace std;
    map<int,bool>q,Q;
    inline void Read(int &x)
    {
        register char ch=getchar();
        for(x=0;!isdigit(ch);ch=getchar());
        for(;isdigit(ch);x=x*10+ch-'0',ch=getchar());
    }
    int A[N][N],B[N][N],n,ans;
    int Main()
    {
        Read(n);
        for(int i=1;i<=n;++i)
         for(int j=1;j<=n;++j)
          Read(A[i][j]);
        for(int i=1;i<=n;++i)
         for(int j=1;j<=n;++j)
              Read(B[i][j]);
        for(int i=n;i>=1;--i)
        {
            for(int j=1;j<=n-i+1;++j)
             for(int k=1;k<=n-i+1;++k)
              for(int l=1;l<=n-i+1;++l)
               for(int a=1;a<=n-i+1;++a)
               {
                   bool flag=true;
                   for(int b=0;b<i;++b)
                   {
                     for(int c=0;c<i;++c)
                     if(A[j+b][k+c]!=B[l+b][a+c])
                     {
                         flag=false;
                         break;
                     }
                     if(flag==false) break;
                   }
                   if(flag) {printf("%d
    ",i);return 0;}
               }
        }
        return 0;
        fclose(stdin);
        fclose(stdout);
    }
    int sb=Main();
    int main(int argc,char *argv[]){;}
  • 相关阅读:
    自己动手丰衣足食之轮播图一动态修改marginTop属性实现轮播图
    自己动手丰衣足食之 jQuery 数量加减插件
    Asp.net 中,在服务端向客户端写脚本的常用方法
    Asp.Net使用加密cookie代替session验证用户登录状态 源码分享
    Javascript技术之详尽解析event对象
    Javascript的V8引擎研究
    11个实用的CSS学习工具[转载收藏]
    为什么JavaScript声明变量的时候鼓励加var关键字
    asp.net菜鸟到中级程序员的飞跃 --30本好书点评
    创建安全的ashx文件,ashx编译
  • 原文地址:https://www.cnblogs.com/ruojisun/p/7593515.html
Copyright © 2011-2022 走看看