试题编号: 201503-1
试题名称: 图像旋转
时间限制: 5.0s
内存限制: 256.0MB
问题描述:

问题描述
  旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度。
  计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可。
输入格式
  输入的第一行包含两个整数n, m,分别表示图像矩阵的行数和列数。
  接下来n行每行包含m个整数,表示输入的图像。
输出格式
  输出m行,每行包含n个整数,表示原始矩阵逆时针旋转90度后的矩阵。
样例输入
2 3
1 5 3
3 2 4
样例输出
3 4
5 2
1 3
评测用例规模与约定
  1 ≤ n, m ≤ 1,000,矩阵中的数都是不超过1000的非负整数。

问题链接:CCF201503-1 图像旋转
问题简述:先输入正整数n和m,再输入n*m的整数矩阵,将矩阵逆时针旋转90°输出。
问题分析
重写解题博客以及解题程序代码(参见参考链接),解题逻辑更加清晰,解题代码更加简洁,多种语言解法。
这是一个下标转换问题,实际上并不需要将数据另外存储。下标转换问题是程序中经常出现的问题,逻辑并不复杂,需要找出转换数学公式或数学函数关系。
这里给出解题的C语言程序、Python语言程序和Java语言程序。
Java语言程序只得90分,应该不是程序逻辑错误,官方评测系统显示内存使用293M,出现内存超限。按理说,矩阵数据量并不大,每个矩阵只有1000×1000个数据,也就4M左右,出现内存超限有点奇怪,应该是内存释放问题导致。考虑到JVM的存储管理机制,也许对于Java语言程序,存储上限应该设置得大一些才合理。
程序说明
用二维数组存储矩阵,这是理所当然的事情。
对于C语言程序,输出时,为了减少减一计算,循环语句用“for (j = 1; j <= m; j++)”,输出元素用“a[i][m - j]”(关键是那个下标表达式"m-j")。也许这个是没有必要的,只是一种减少计算的技巧而已。
循环控制变量使用略微特殊一些,以使得程序更好理解。读入矩阵数据时,行控制用i,列控制用j;而输出时则行控制用j,列控制用i,更为直观易懂。
参考链接
CCF201503-1 图像旋转(100分)
题记:(略)

100分的C语言程序如下:

/* CCF201503-1 图像旋转 */#include <stdio.h>#define N 1000
int a[N][N];int main(void)
{int n, m, i, j;/* 读入矩阵 */scanf("%d%d", &n, &m);for (i = 0; i < n; i++)for (j = 0; j < m; j++)scanf("%d", &a[i][j]);/* 输出结果 */for (j = 1; j <= m; j++) {for (i = 0; i < n; i++) {if(i != 0) putchar(' ');printf("%d", a[i][m - j]);}putchar('\n');}return 0;
}

100分的Python语言程序如下:

# CCF201503-1 图像旋转n, m = map(int, input().split())
a = []
for i in range(n):row = list(map(int,input().split()))[::-1]a.append(row)
for i in range(m):for j in range(n):print(a[j][i],end=' ')print()

100分的Java语言程序(内存超限,90分)如下:

/* CCF201503-1 图像旋转 */import java.util.Scanner;public class Main {public static void main(String args[]){Scanner input = new Scanner(System.in);int n = input.nextInt();int m = input.nextInt();int[][] a = new int[n][m];for (int i = 0; i < n; i++)for (int j = 0; j < m; j++)a[i][j] = input.nextInt();for (int j = 1; j <= m; j++) {for (int i = 0; i < n; i++) {if(i != 0) System.out.print(" ");System.out.print(a[i][m - j]);}System.out.println();}}
}

CCF201503-1 图像旋转(100分)【数学计算】相关推荐

  1. 1.8 编程基础之多维数组 11 图像旋转 4分 python

    http://noi.openjudge.cn/ch0108/11/ """ 1.8 编程基础之多维数组 11 图像旋转 4分 http://noi.openjudge. ...

  2. 初一上册数学用计算机进行运算,400道初一上册数学计算题,初一上册100道数学计算题及答案。...

    1.-15+6÷(-3)×1/2 2.(1/4-1/2+1/6)×24 3.|-5/14|×(-3/7)2÷3/14 4.2/3+(-1/5)-1+1/3 23+(-73) (-84)+(-49) 7 ...

  3. 写乐100道练习题_初一数学计算题100道

    初一100道数学计算题及解答 1.25×(8+10) =1.25×8+1.25×10 =10+12.5=22.5 9123-(123+8.8) =9123-123-8.8 =9000-8.8 =899 ...

  4. 快速图像旋转算法的c++实现

    0 引言 在数字图像处理技术中,图像旋转算法是最基本的操作之一.本文实现一种快速的图像旋转算法,并和原始方法以及opencv提供的旋转方案进行速度上的比较. 1 基本原理 图像旋转有两种计算坐标的思路 ...

  5. 大学数计算机学霸曾做出的数学题,全是100分!这份高校学霸成绩单刷屏

    原标题:全是100分!这份高校学霸成绩单刷屏 导读 近日,一份5门课程5个100分的天津大学学霸的成绩单,刷屏网络.这些专业第一的学霸,大学生活都是什么样的?一起来看看他们的秘籍! 5门课程100分 ...

  6. CCF201503-1 图像旋转(100分)

    试题编号: 201503-1 试题名称: 图像旋转 时间限制: 5.0s 内存限制: 256.0MB 问题描述: 问题描述 旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度. ...

  7. CCF201903-3 损坏的RAID5(100分)【数学计算+文本处理】

    试题编号: 201903-3 试题名称: 损坏的RAID5 时间限制: 1.0s 内存限制: 512.0MB 问题链接:CCF201903-3 损坏的RAID5 问题简述:(略) 问题分析:数学计算问 ...

  8. 时间计算题100道_小学数学专项练习:计算题200道,趁早打印给孩子,期末考试拿100分!...

    点击上方「升学的秘诀」关注我们! 获取更多教育经验.方法.学习资料等,每天中午12点与您相约! ▼ 说到我们数学学习过程中最重要的是什么?毋庸置疑那就是我们的一个计算能力,计算可以说是贯穿了我们整个数 ...

  9. 语言三做一年级算题_一年级数学期末考试,学生交卷说能考100分,快让你家孩子试试吧...

    时间不知不觉已到7月份了,各地小学将要迎来期末水平考试了,小学生也是十分开心,考完试又要放假了,更有小学生笑着对老师说"今年的假期有点长啊",一句话把老师逗得哭笑不得. 今天上午同 ...

最新文章

  1. python流程控制-详解Python流程控制语句
  2. 发表的原创文章还希望大家多提宝贵意见!
  3. avcodec_decode_video2 第三个参数 got_picture_ptr 的含义
  4. 《HTML5 canvas开发详解(第2版)》——1.3 本书使用的基础HTML页面
  5. 黑客攻破网站涂鸦特效(强烈建议看看)
  6. 256qam调制星座图_5G调制怎么实现的?一文读懂
  7. vue中的方法如何暴露给webview,使安卓和iOS可以调用
  8. Android Handler处理机制 ( 三 ) ——Handler,Message,Looper,MessageQueue
  9. swoole 固定包头格式
  10. 你怎么看当前中文语音识别技术在国内的应用?
  11. 如何在校外下载期刊全文--应对大家工作后的资料搜寻
  12. JAVA小鑫の日常系列故事(七)——小纸条
  13. 自动提取全部EXCEL sheet 名称
  14. [读书笔记]自控力内容整理
  15. winform 使用chart控件画圆环图
  16. 是否允许应用获取设备信息_手机权限获取弹窗不断,隐私安全如何确保,这些权限需谨慎...
  17. 【Houdini官方入门教程翻译】概述——UV和纹理贴图
  18. 使用for循环遍历1900-2090年的闰年有哪些
  19. PhEmail:基于Python的开源网络钓鱼攻击工具
  20. 如何让电脑微信双开呢,两行代码解决问题

热门文章

  1. 喜马拉雅 xm文件转m4a_录音转文字:学习/办公/生活都极为实用!
  2. 给 QtCtreator 工程文件 pro 配置 pthread库和liburcu库
  3. “小程序”的最佳入口位置--关于微信小程序的思考笔记
  4. Oracle Spatial常用方法记录
  5. Unity Occlusion Culling 遮挡剔除研究
  6. Android图表引擎AChartEngine - 简介
  7. 使用Visual C#制作可伸缩个性化窗体
  8. .net C# Treeview的Node拖动,Node节点上下移动
  9. JS中prototype、__proto__以及原型链
  10. java 反射 配置文件_简单模仿配置文件的反射机制