• 12:变幻的矩阵


    12:变幻的矩阵

    总时间限制: 
    1000ms
     
    内存限制: 
    65536kB
    描述

    有一个N x N(N为奇数,且1 <= N <= 10)的矩阵,矩阵中的元素都是字符。这个矩阵可能会按照如下的几种变幻法则之一进行变幻(只会变幻一次)。 

    现在给出一个原始的矩阵,和一个变幻后的矩阵,请编写一个程序,来判定原始矩阵是按照哪一种法则变幻为目标矩阵的。 

    1. 按照顺时针方向旋转90度; 
    如: 

    1 2 3        7 4 1
    4 5 6 变幻为  8 5 2
    7 8 9        9 6 3
    

    2. 按照逆时针方向旋转90度; 
    如:
    1 2 3        3 6 9
    4 5 6 变幻为  2 5 8
    7 8 9        1 4 7 
    

    3. 中央元素不变(如下例中的 5),其他元素(如下例中的3)与“以中央元素为中心的对应元素”(如下例中的7)互换; 
    如:
    1 2 3       9 8 7
    4 5 6 变幻为 6 5 4
    7 8 9       3 2 1 
    

    4. 保持原始矩阵,不变幻; 

    5. 如果 从原始矩阵 到 目标矩阵 的变幻,不符合任何上述变幻,请输出5
    输入
    第一行:矩阵每行/列元素的个数 N;
    第二行到第N+1行:原始矩阵,共N行,每行N个字符;
    第N+2行到第2*N+1行:目标矩阵,共N行,每行N个字符;
    输出
    只有一行,从原始矩阵 到 目标矩阵 的所采取的 变幻法则的编号。
    样例输入
    5
    a b c d e
    f g h i j
    k l m n o
    p q r s t
    u v w x y
    y x w v u
    t s r q p
    o n m l k
    j i h g f
    e d c b a
     1 #include<iostream>
     2 using namespace std;
     3 char a[100][100];
     4 char b[100][100];
     5 int main()
     6 {
     7     int n,i,j,tot=0,q,tot1=0,tota=0,totb=0;
     8     cin>>n;
     9     for(i=1;i<=n;i++)
    10      {
    11          for(j=1;j<=n;j++)
    12           {
    13               cin>>a[i][j];
    14               tota+=a[i][j];
    15           }
    16      }
    17     for(i=1;i<=n;i++)
    18      {
    19          for(j=1;j<=n;j++)
    20           {
    21               cin>>b[i][j];
    22               totb+=b[i][j];
    23           }
    24       } 
    25     for(i=1;i<=n;i++)
    26     {
    27       for(j=1;j<=n;j++)
    28     {  
    29     if(a[1][j]==b[i][n]&&a[n][j]==b[i][1]&&a[i][n]==b[n][j]&&a[i][1]==b[1][j]&&tota==totb)q=1;
    30     }
    31         for(j=1;j<=n;j++)
    32     {
    33     if(a[i][1]==b[n][j]&&a[n][j]==b[i][n]&&a[i][n]==b[1][j]&&a[1][j]==b[i][1]&&tota==totb)q=2; 
    34     }
    35      }   
    36      for(i=1;i<=n;i++)
    37     {
    38       for(j=1;j<=n;j++)
    39       {
    40         if(a[i][j]==b[n-i+1][n-j+1])
    41         tot1++;
    42       }
    43       if(tot1==n*n)
    44       {
    45       q=3;}
    46      }  
    47      for(i=1;i<=n;i++)
    48       {
    49           for(j=1;j<=n;j++)
    50            {
    51                if(a[i][j]==b[i][j])tot++;
    52            }
    53          if(tot==n*n)
    54          {
    55              q=4;
    56           } 
    57        } 
    58      if(q!=1&&q!=2&&q!=3&&q!=4)
    59      {
    60          q=5;
    61        }  
    62       cout<<q;
    63 }
    64 以上代码可以骗分;
    65 下为真;
    66 #include<iostream>
    67 #include<cstdio>
    68 using namespace std;
    69 char a[11][11];
    70 char b[11][11];
    71 bool x[6];
    72 int main() {
    73     int n;
    74     cin>>n;
    75     for(int i=1; i<=n; i++)
    76         for(int j=1; j<=n; j++) {
    77             cin>>a[i][j];
    78         }
    79     for(int i=1; i<=n; i++)
    80         for(int j=1; j<=n; j++) {
    81             cin>>b[i][j];
    82         }
    83     for(int i=1; i<=n; i++)
    84         for(int j=1; j<=n; j++) {
    85             if(a[i][j]!=b[j][n-i+1])x[1]=1;
    86             if(a[i][j]!=b[n-j+1][i])x[2]=1;
    87             if(a[i][j]!=b[n-i+1][n-j+1])x[3]=1;
    88             if(a[i][j]!=b[i][j])x[4]=1;
    89         }
    90     for(int i=1; i<=4; i++) {
    91         if(x[i]==0) {
    92             cout<<i;
    93             x[6]=1;
    94         }
    95 
    96     }
    97     if(x[6]==0)cout<<"5";
    98     return 0;
    99 }
    样例输出
    3
  • 相关阅读:
    数据安全-数据加密学
    网络文件共享服务-SAMBA服务搭建和配置
    vsftp
    网络文件共享服务-NFS服务配置和测试
    负载均衡,主备模式
    系统中查找文件
    如何管理Linux系统的进程与计划任务
    Robot Framework 发送接口示例
    unittest官网文档
    macOS搭建Selenium Server(Selenium Grid)
  • 原文地址:https://www.cnblogs.com/lyqlyq/p/6659659.html
Copyright © 2020-2023  润新知