九度OJ 题目1171:C翻转
来源:互联网 发布:win10 centos 双系统 编辑:程序博客网 时间:2024/06/08 18:23
/********************************** 日期:2013-2-11* 作者:SJF0115* 题号: 九度OJ 题目1171:C翻转* 来源:http://ac.jobdu.com/problem.php?pid=1171* 结果:AC* 来源:2010年北京邮电大学计算机研究生机试真题* 总结:**********************************/#include<stdio.h>#include<stdlib.h>#include<string.h>int Matrix[5][5],Matrix2[5][5];//翻转4个数 b = 2 翻转9个数 b = 3//顺时针 a = 1 逆时针 a = 2//旋转int Rotate(int a,int b,int x,int y){int i,j;//顺时针if(a == 1){//翻转4个数if(b == 2){for(i = x;i < x+b;i++){for(j = y;j < y+b;j++){Matrix[j][2*(x+1)-i-1] = Matrix2[i][j];}}}//翻转9个数else{for(i = x;i < x+b;i++){for(j = y;j < y+b;j++){Matrix[j][2*(x+1)-i] = Matrix2[i][j];}}}}//逆时针else{//翻转4个数if(b == 2){for(i = x;i < x+b;i++){for(j = y;j < y+b;j++){Matrix[2*(x+1)-j-1][i] = Matrix2[i][j];}}}//翻转9个数else{for(i = x;i < x+b;i++){for(j = y;j < y+b;j++){Matrix[2*(x+1)-j][i] = Matrix2[i][j];}}}}return 0;}int main(){int a,b,x,y;//freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin); while(scanf("%d %d %d %d %d",&Matrix[1][1],&Matrix[1][2],&Matrix[1][3],&Matrix[1][4],&Matrix[1][5]) != EOF) {int i,j;//输入数据for(i = 1;i <= 5;i++){Matrix2[1][i] = Matrix[1][i];}for(i = 2;i <= 5;i++){for(j = 1;j <= 5;j++){scanf("%d",&Matrix[i][j]);Matrix2[i][j] = Matrix[i][j];}}scanf("%d %d %d %d",&a,&b,&x,&y);//旋转Rotate(a,b,x,y);//输出for(i = 1;i <= 5;i++){for(j = 1;j <= 5;j++){if(j != 5){printf("%d ",Matrix[i][j]);}else{printf("%d\n",Matrix[i][j]);}}} } return 0;}
题目1171:C翻转时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:2016
解决:584
- 题目描述:
首先输入一个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 56 7 8 9 1011 12 13 14 1516 17 18 19 2021 22 23 24 251 3 1 1
- 样例输出:
11 6 1 4 512 7 2 9 1013 8 3 14 1516 17 18 19 2021 22 23 24 25
- 来源:
- 2010年北京邮电大学计算机研究生机试真题