zoukankan      html  css  js  c++  java
  • 九度oj 题目1171:C翻转

    题目描述:

    首先输入一个5 * 5的数组,然后输入一行,这一行有四个数,前两个代表操作类型,后两个数x y代表需操作数据为以x y为左上角的那几个数据。

    操作类型有四种: 
    1 2 表示:90度,顺时针,翻转4个数 
    1 3 表示:90度,顺时针,翻转9个数 
    2 2 表示:90度,逆时针,翻转4个数 
    2 3 表示:90度,逆时针,翻转9个数 

    输入:

    输入有多组数据。
    每组输入一个5 * 5的数组,然后输入一行,这一行有四个数,前两个代表操作类型,后两个数x y代表需操作数据为以x y为左上角的那几个数据。

    输出:

    输出翻转后的数组。

    样例输入:
    1 2 3 4 5
    6 7 8 9 10
    11 12 13 14 15
    16 17 18 19 20
    21 22 23 24 25
    1 3 1 1
    样例输出:
    11 6 1 4 5
    12 7 2 9 10
    13 8 3 14 15
    16 17 18 19 20
    21 22 23 24 25

    题目没有说明那个是x轴,那个是y轴。
    这里竖的是x轴,横的是y轴
    代码如下
     1 #include <cstdio>
     2 #include <algorithm>
     3 int num[6][6];
     4 int tmp[4][4];
     5 
     6 int main(int argc, char const *argv[])
     7 {
     8     //freopen("input.txt","r",stdin);
     9     while(scanf("%d",&num[1][1]) != EOF) {
    10         for(int i = 2; i <= 5; i++) {
    11             scanf("%d",&num[1][i]);
    12         }
    13         for(int i = 2; i <= 5; i++) {
    14             for(int j = 1; j <= 5; j++) {
    15                 scanf("%d",&num[i][j]);
    16             }
    17         }
    18         int a,b,x,y;
    19         scanf("%d %d %d %d",&a,&b,&x,&y);
    20         if(a == 2 && b == 2) {//ni
    21             int tmp = num[x][y];
    22             num[x][y] = num[x][y+1];
    23             num[x][y+1] = num[x+1][y+1];
    24             num[x+1][y+1] = num[x+1][y];
    25             num[x+1][y] = tmp;
    26         }
    27         else if(a == 1 && b == 2) {//shun
    28             int tmp = num[x][y];
    29             num[x][y] = num[x+1][y];
    30             num[x+1][y] = num[x+1][y+1];
    31             num[x+1][y+1] = num[x][y+1];
    32             num[x][y+1] = tmp;
    33         }
    34         else if(b == 3) {
    35             int tmp[4][4];
    36             for(int i = 1; i <= 3; i++) {
    37                 for(int j = 1; j <= 3; j++) {
    38                     tmp[i][j] = num[x+i-1][y+j-1];
    39                 }
    40             }
    41             if(a == 1) {
    42                 for(int i = 1; i <= 3; i++) {
    43                     for(int j = 1; j <= 3; j++) {
    44                         num[x+i-1][y+j-1] = tmp[4-j][i];
    45                     }
    46                 }
    47             }
    48             else if(a == 2) {
    49                 for(int i = 1; i <= 3; i++) {
    50                     for(int j = 1; j <= 3; j++) {
    51                         num[x+i-1][y+j-1] = tmp[j][4-i];
    52                     }
    53                 }
    54             }
    55         }
    56         for(int i = 1; i <= 5; i++) {
    57             printf("%d",num[i][1]);
    58             for(int j = 2; j <= 5; j++) {
    59                 printf(" %d",num[i][j]);
    60             }
    61             printf("
    ");
    62         }
    63         
    64     }
    65     return 0;
    66 }
  • 相关阅读:
    docker
    redis 3.2.6 on ubuntu 14.04
    go异常处理
    go语言的命令行库
    iptables
    nsq
    etcd-v2第一集
    rabbitmq, windows/linux, c/c++/node.js/golang/dotnet
    zeromq:c,c++,golang及nodejs使用
    golang下的grpc
  • 原文地址:https://www.cnblogs.com/jasonJie/p/5808391.html
Copyright © 2011-2022 走看看