【九度OJ】题目1171:C翻转 解题报告

标签(空格分隔): 九度OJ


http://ac.jobdu.com/problem.php?pid=1171

题目描述:

首先输入一个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

Ways

貌似是我做过最傻的题。。看到结果是啥样的就一个数据一个数据的对上号。逆时针90度等于顺时针三次。

另外注意数组的操作,不用显性使用指针,数组名字就是指针。

#include<stdio.h>

void op12(int nums[5][5], int x, int y) {
int temp = nums[x - 1][y - 1];
nums[x - 1][y - 1] = nums[x][y - 1];
nums[x][y - 1] = nums[x][y];
nums[x][y] = nums[x - 1][y];
nums[x - 1][y] = temp;
} void op13(int nums[5][5], int x, int y) {
int temp1 = nums[x - 1][y - 1];
int temp2 = nums[x][y - 1];
nums[x - 1][y - 1] = nums[x + 1][y - 1];
nums[x][y - 1] = nums[x + 1][y];
nums[x + 1][y - 1] = nums[x + 1][y + 1];
nums[x + 1][y] = nums[x][y + 1];
nums[x + 1][y + 1] = nums[x - 1][y + 1];
nums[x][y + 1] = nums[x - 1][y];
nums[x - 1][y + 1] = temp1;
nums[x - 1][y] = temp2;
} void op22(int nums[5][5], int x, int y) {
op12(nums, x, y);
op12(nums, x, y);
op12(nums, x, y);
} void op23(int nums[5][5], int x, int y) {
op13(nums, x, y);
op13(nums, x, y);
op13(nums, x, y);
} int main() {
int nums[5][5];
while (scanf("%d", &nums[0][0]) != EOF) {
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (i == 0 && j == 0) {
continue;
}
scanf("%d", &nums[i][j]);
}
}
int cmd1, cmd2;
int x, y;
scanf("%d%d", &cmd1, &cmd2);
scanf("%d%d", &x, &y);
if (cmd1 == 1 && cmd2 == 2) {
op12(nums, x, y);//不用显性使用指针
} else if (cmd1 == 1 && cmd2 == 3) {
op13(nums, x, y);
} else if (cmd1 == 2 && cmd2 == 2) {
op22(nums, x, y);
} else if (cmd1 == 2 && cmd2 == 3) {
op23(nums, x, y);
}
for (int i = 0; i < 5; i++) {
bool isFirst = true;
for (int j = 0; j < 5; j++) {
if (isFirst) {
printf("%d", nums[i][j]);
isFirst = false;
} else {
printf(" %d", nums[i][j]);
} }
printf("\n");
}
}
return 0;
}

Date

2017 年 3 月 17 日

【九度OJ】题目1171:C翻转 解题报告的更多相关文章

  1. 九度oj 题目1171:C翻转

    题目描述: 首先输入一个5 * 5的数组,然后输入一行,这一行有四个数,前两个代表操作类型,后两个数x y代表需操作数据为以x y为左上角的那几个数据. 操作类型有四种:  1 2 表示:90度,顺时 ...

  2. 九度oj 题目1361:翻转单词顺序

    题目描述: JOBDU最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,“stu ...

  3. 九度OJ 题目1384:二维数组中的查找

    /********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...

  4. hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  5. 九度oj题目&amp;吉大考研11年机试题全解

    九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码).    http://ac.jobdu.com/problem.php?pid=11 ...

  6. 九度oj 题目1007:奥运排序问题

    九度oj 题目1007:奥运排序问题   恢复 题目描述: 按要求,给国家进行排名. 输入:                        有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号 ...

  7. 九度oj 题目1087:约数的个数

    题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...

  8. 九度OJ题目1105:字符串的反码

    tips:scanf,cin输入字符串遇到空格就停止,所以想输入一行字符并保留最后的"\0"还是用gets()函数比较好,九度OJ真操蛋,true?没有这个关键字,还是用1吧,还是 ...

  9. 九度oj题目1009:二叉搜索树

    题目描述: 判断两序列是否为同一二叉搜索树序列 输入:                        开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束. 接 ...

  10. 九度oj题目1002:Grading

    //不是说C语言就是C++的子集么,为毛printf在九度OJ上不能通过编译,abs还不支持参数为整型的abs()重载 //C++比较正确的做法是#include<cmath.h>,cou ...

随机推荐

  1. python-django-类函数__str__ 函数

    打印一个实例化对象时,打印的其实时一个对象的地址.而通过__str__()函数就可以帮助我们打印对象中具体的属性值,或者你想得到的东西. 因为再python中调用print()打印实例化对象时会调用_ ...

  2. perl 转置矩阵

    这里提供一个转置矩阵的perl脚本,R语言中的t()函数同样也能实现转置 1 use strict; 2 3 open A,"$ARGV[0]"; 4 5 my %ha; 6 my ...

  3. pyyaml模块

    pyyaml模块是一种文件数据处理格式的方法,常用与生成.解析或修改.yaml配置文件 1.常见.yaml文件格式内容如下 languages: - Ruby - Perl - Python webs ...

  4. A Child's History of England.40

    Excommunication was, next to the Interdict I told you of at the close {end} of the last chapter, the ...

  5. 断言(assert)简介

    java中的断言assert的使用 一.assertion的意义和用法 J2SE 1.4在语言上提供了一个新特性,就是assertion功能,他是该版本再Java语言方面最大的革新. 从理论上来说,通 ...

  6. html5 绘图

    SVG 在 SVG 中,每个元素是图型与数据相结合的一个对象. 修改对象属性的值,图型会立即体现出这种变化. 因为是对象,所以支持事件处理. D3使用的是SVG Canvas 不支持事件处理. cha ...

  7. SpringBoot java配置类@Configuration 的两种写法

    首先在Springboot项目中,件一个java类,使用注解@Configuration  ,则这个类是SpringBoot bean的创建的配置文件类,,这种配置文件类有两种写法 1.使用包扫描 , ...

  8. Mybatis中 SIMPLE、REUSE、BATCH的区别

    Executor分成两大类,一类是CacheExecutor,另一类是普通Executor. 普通类又分为: ExecutorType.SIMPLE: 这个执行器类型不做特殊的事情.它为每个语句的执行 ...

  9. SpringBoot+MybatisPlus实现批量添加的两种方式

    第一种: 因为Mysql数据每次发送sql语句的长度不能超过1M,所以,每次发送insert语句以固定长度发送: 将sql语句在provider中,以固定长度装入List集合中,然后返回service ...

  10. JSP 文字乱码、${}引用无效

    问题: 代码:<form action="/test/requestPost.do" method="post"> <input type=& ...