码迷,mamicode.com
首页 > 其他好文 > 详细

九度oj 题目1171:C翻转

时间:2016-08-25 23:29:48      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

题目描述:

首先输入一个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("\n");
62         }
63         
64     }
65     return 0;
66 }

 

九度oj 题目1171:C翻转

标签:

原文地址:http://www.cnblogs.com/jasonJie/p/5808391.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!