九度OJ--1164(C++)-程序员宅基地

技术标签: c/c++  

#include <iostream>
#include <vector>

using namespace std;

int main() {

  int n; // n为矩阵阶数

  while(cin>>n) {

    int x, y, i, j; // 用于循环控制

    vector< vector<int> > vec1(n, vector<int>(n));
    vector< vector<int> > vec2(n, vector<int>(n));

    // 向动态数组中存入数据
    for(x=0; x<n; x++) {
      for(y=0; y<n; y++) {
        int mid; // 中间变量,用于向vec1中存入数据
        cin>>mid;
        vec1[x][y] = mid;
      }
    }
    for(x=0; x<n; x++) {
      for(y=0; y<n; y++) {
        int mid; // 中间变量,用于向vec2中存入数据
        cin>>mid;
        vec2[x][y] = mid;
      }
    }

    int flag = 0; // 用于判定全部元素是否符合旋转角度,是flag=1,否flag=0
    int angle = -1; // 记录旋转角度

    // 判断旋转角度是否为0
    for(i=0; i<n; i++) {

      for(j=0; j<n; j++) {

        if(vec1[i][j] == vec2[i][j]) {
          flag = 1;
          continue;
        }
        else {
          flag = 0;
          break;
        }
      }

      if(flag == 1) {
        continue;
      }
      else {
        break;
      }
    }
    if(flag == 1) {
      angle = 0;
      cout<<angle<<endl;
      continue;
    }
    else {
      angle = -1;
    }

    // 判断旋转角度是否为90
    for(i=0; i<n; i++) {

      for(j=0; j<n; j++) {

        if(vec1[i][j] == vec2[j][n-1-i]) {
          flag = 1;
          continue;
        }
        else {
          flag = 0;
          break;
        }
      }

      if(flag == 1) {
        continue;
      }
      else {
        break;
      }
    }
    if(flag == 1) {
      angle = 90;
      cout<<angle<<endl;
      continue;
    }
    else {
      angle = -1;
    }

    // 判断旋转角度是否为180
    for(i=0; i<n; i++) {

      for(j=0; j<n; j++) {

        if(vec1[i][j] == vec2[n-1-i][n-1-j]) {
          flag = 1;
          continue;
        }
        else {
          flag = 0;
          break;
        }
      }

      if(flag == 1) {
        continue;
      }
      else {
        break;
      }
    }
    if(flag == 1) {
      angle = 180;
      cout<<angle<<endl;
      continue;
    }
    else {
      angle = -1;
    }

    // 判断旋转角度是否为279
    for(i=0; i<n; i++) {

      for(j=0; j<n; j++) {

        if(vec1[i][j] == vec2[n-1-j][i]) {
          flag = 1;
          continue;
        }
        else {
          flag = 0;
          break;
        }
      }

      if(flag == 1) {
        continue;
      }
      else {
        break;
      }
    }
    if(flag == 1) {
      angle = 270;
      cout<<angle<<endl;
      continue;
    }
    else {
      angle = -1;
    }

    // 若以上角度都不符合
    if(angle == -1) {
      cout<<angle<<endl;
      continue;
    }

  }

  return 0;

}

posted on 2016-05-31 10:09  LZ_Jaja 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/zlian2016/p/5544969.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dichunpu6524/article/details/101861797

智能推荐

读书真的无用吗?_“当初我用一麻袋的钱,买了一麻袋的书,最后把一麻袋的书卖掉,却买不起一个麻袋。-程序员宅基地

文章浏览阅读94次。每隔一段时间,“读书无用论”就会在社会上广泛流传。“当初我用一麻袋的钱,买了一麻袋的书,最后把一麻袋的书卖掉,却买不起一个麻袋。”这句话生动地体现了“读书无用论”的内涵,读书不赚钱,所以读书没用。 为什么会出现这种情况呢?读书无用论,无外乎就是认为教育投资没有得到相应的回报。读书收益具有延迟性,知识技能在短时间内无法带来显著的效益,比如对于家庭条件不好的人而言,十年寒窗,学费、生活费会花掉不少钱,这还不如早点出去打工挣钱来的实在。 这就涉及一个概念:机会成本,..._“当初我用一麻袋的钱,买了一麻袋的书,最后把一麻袋的书卖掉,却买不起一个麻袋。

关于初学者对ispostback的理解帮助-程序员宅基地

文章浏览阅读67次。Page.IsPostBack 是用来检查目前网页是否为第一次加载,当使用者第一次浏览这个网页时Page.IsPostBack 会传回False,不是第一次浏览这个网页时就传回True!Page_Load 事件中就可以使用ispostback来避免做一些重复的动作。主要用于对一些控件做初始化和数据绑定 有时如果不用ispostback 会发现有时出现一些莫名的错误这里我举二个例子例题一(控..._gridview不放在ispostback中 也能取值

关于:va_list,va_start,va_arg的3篇文章(ZZ) _char data[1024]; va_list argp; va_start(argp, fmt)-程序员宅基地

文章浏览阅读1.7k次。 关于:va_list,va_start,va_arg的3篇文章(ZZ) 文章1:C语言中变长参数(va_list,va_start,va_arg)沉思录 转载自:http://blog.sina.com.cn/s/print_3e7df0e5010005il.html 一.引言: C语言中关于变长参数的使用很简单,无非是如下的框架。是否可以不用宏而编写处理变长参数的函数呢?答案是肯定的,本文作了一些处浅探讨,不足之处望各位批评指正。 使用宏的程序框架:#include

传统组织如何转型敏捷组织_开始产品组织转型,第6部分-程序员宅基地

文章浏览阅读163次。传统组织如何转型敏捷组织 我一直在想我的客户已经成功地从基于项目/资源效率的组织转变为基于产品/流程效率的组织。 他们有以下共同点: 资深人士使经理们可以安全地进行实验。 他们创建了非常小的实验(经理或团队,或一起)。 高级经理经常问这样的问题: 您需要我什么,才能转到产品组织,我们在那儿优化产品流向客户的流程以及员工的满意度? 这是一个大问题。 这也是一个引人入胜的问..._组织转型

Angular系列教程之依赖注入详解_angular依赖注入使用-程序员宅基地

文章浏览阅读1k次,点赞6次,收藏9次。在Angular中,依赖注入被广泛应用于组件、服务、指令等场景,本文将详细解析Angular中的依赖注入。在Angular中,依赖注入是指将服务或值注入到组件、指令、管道等对象中,使得这些对象可以在运行时动态地获取和使用这些服务或值。依赖注入的原理主要是通过将对象的依赖关系显式地定义在一个容器中(通常是服务提供者),然后在对象被实例化时,由容器负责将这些依赖关系注入到对象中。依赖扫描:通过Angular的依赖注入系统,可以自动扫描组件、服务和指令中的依赖关系,并将其自动注入到相应的对象中。_angular依赖注入使用

web前端入门到实战:css3 loading (缓冲,等待效果实现)_前端按钮添加缓冲样式-程序员宅基地

文章浏览阅读329次。效果一HTML<div class="zh-loading"><ul><li></li><li></li><li></li><li></li></ul></div>CSSweb前端开发学习Q-q-u-n:784783012 ,分享学习的方法和需..._前端按钮添加缓冲样式

随便推点

2023年06月CCF-GESP编程能力等级认证Python编程三级真题解析-程序员宅基地

文章浏览阅读84次。高级语言编写的程序需要经过以下( )操作,可以生成在计算机上运行的可执行代码。A:编辑B:保存C:调试D:编译。

C#的字节流Stream_c# 字节流-程序员宅基地

文章浏览阅读2.2k次。一、原理读写内存-MemoryStream类MemoryStream类用于向内存而不是磁盘读写数据。MemoryStream封装以无符号字节数组形式存储的数据,该数组在创建MemoryStream对象时被初始化,或者该数组可创建为空数组。可在内存中直接访问这些封装的数据。内存流可降低应用程序中对临时缓冲区和临时文件的需要。1、MemoryStream类封装一个字节数组,在构造实例时可以使用一个字节数组作为参数,但是数组的长度无法调整。使用默认无参数构造函数创建实例,可以使用Write方法写入,._c# 字节流

解决Win7/8/10系统中的Hyper-V和VMware虚拟机软件共存问题_win 7 vmware 与 hyper 冲突-程序员宅基地

文章浏览阅读2.6k次。许多企业不是在丢弃基于VMware的现有系统,而是在慢慢向微软的Hyper-V虚拟机管理程序迁移。微软在简化管理这两个虚拟化平台的任务,因为最新版本的System Center 2012 R2虚拟机管理器(VMM)让你可以借助单一管理平台,管理VMware和Hyper-V。所以,现在你还可以使用VMM,将虚拟机从VMware平台迁移到Hyper-V平台。不过也可以等待Hyper-V v_win 7 vmware 与 hyper 冲突

All in One | X-AnyLabeling v2.0.0 全自动标注工具强势登场,全新功能亮相,欢迎体验升级_xanylabelling下载-程序员宅基地

文章浏览阅读699次,点赞5次,收藏13次。X-AnyLalbeing 中同样提供了丰富的快捷键,极大提升标注效率。大家可根据自己的习惯通过修改当前设备的用户根目录下的#Linux#Windows默认的快捷键设置可以参考 github 主页示意图。对于中已提供的内置模型,可参考以下操作:创建配置文件进入项目工程,查看所需的配置文件查看配置文件配置文件需要遵循以下格式,以stride: 32classes:- person- bicycle- car..._xanylabelling下载

sql语句中单引号嵌套问题_pgsql正则表达式以单引号嵌套单引号-程序员宅基地

文章浏览阅读3.4k次。在sql语句中,我们难免会用到单引号嵌套的时候,但是直接嵌套肯定是不行的,java中用反斜杠做转义符也是不行的,在sql中是用单引号来做转义符的。比如下面例子是存储过程里查询时的语句示例exec cndoup_getpageofrecords @pagesize=10,@currentpage=1,@columns='*',@tablename='ROOM',@condition='ROO_pgsql正则表达式以单引号嵌套单引号

Android移动开发_android手机移动开发-程序员宅基地

文章浏览阅读3k次。前天老师上课布置了实验,分基础实验和拓展实验,基础实验就是按照老师的要求以及所给代码来编写,拓展实验是设计一个法国国旗,填满整个手机屏幕我写的代码是根据老师的代码稍作修改的,以上,得出结果为尽管是个渣渣但正在努力..._android手机移动开发

推荐文章

热门文章

相关标签