ccf201503-1 ccf 图像旋转-内存限制问题
ccf201503-1 ccf 图像旋转(java代码编写)
最近在准备研究生复试的机试内容,难度大概为ccf2左右,由于博主以前没有写过ccf方面的题。所以最近在勤加练习。
总体来讲ccf第一道题目比较简单,一般在大一学习过编程的水平基本都可以解决,但是在联系过程中过程遇见了一个问题。
问题:ccf201503-1 ccf 图像旋转
这是2015年3月份的ccf考试第一道题
***问题描述
旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转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的非负整数。*斜体样式
首次解决方案
思路很简单,还是比较简单的。
第一步:定义一个二位数组,写一个双重for循环输入,将数值输入存储到数组之中。
第二步:写一个双重for循环,外层for循环控制列,从列最大—>列最小;内层for循环控制行,从行最小—>行最大。
/**
* @Title: Tuxiangxuanzhuan.java
* @Description: TODO : 201503-1 ccf 图像旋转
* @author: benjamin
* @date: 2020年4月24日 下午3:16:27
* @version V1.0*/
package welcome;
import java.util.Scanner;
public class Tuxiangxuanzhuan {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int m = scanner.nextInt();// 行int n = scanner.nextInt();// 列Integer[][] integers = new Integer[m][n];// 循环输入for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {integers[i][j] = scanner.nextInt();}}// 循环输出for (int i = n - 1; i > -1; i--) {for (int j = 0; j < m; j++) {System.out.print(String.valueOf(integers[j][i]) + " ");}System.out.println();}}
}
自己做完测试之后,发现没有问题,将代码提交至oj系统(这里不要忘记改掉类名,博主的英文水平一般打的拼音),结果如下:
发现代码逻辑确实没问题,但是爆出内存超出限制。仔细想了想,应该是做双层for循环输入Nextint()的时候出了问题,可能是因为java自身的问题。尝试优化了一下代码。
二次优化代码
package welcome;
import java.util.Scanner;
public class Tuxiangxuanzhuan {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String[] str = scanner.nextLine().split(" ");int m = Integer.valueOf(str[0]);// 行int n = Integer.valueOf(str[1]);// 列Integer[][] integers = new Integer[m][n];// 循环输入for (int i = 0; i < m; i++) {String[] strings = scanner.nextLine().split(" ");int tmp = 0;for (String string : strings) {integers[i][tmp] = Integer.valueOf(string);tmp++;}}// 循环输出for (int i = n - 1; i > -1; i--) {for (int j = 0; j < m; j++) {System.out.print(String.valueOf(integers[j][i]) + " ");}System.out.println();}}
}
这里想了想,只做单层for循环,每行的输入都作为一个字符串保留,然后使用split()函数,从中间劈开,循环放入数组中。
自己做完测试,发现没有问题,然后提交上ccf oj系统。结果如下:
思考:
i/o操作最耗费内存和时间,首次代码中,在每一次循环体中都要做一次i/o操作,所以复杂度O(n^2),优化之后,在外层for循环中做i/o,在内层for做数据操作,i/o时间复杂度o(n),优化时间。
ccf201503-1 ccf 图像旋转-内存限制问题相关推荐
- CCF——图像旋转201503-1
问题描述 旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度. 计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可. 输入格式 输入的第一行包含 ...
- 【CCF】201503-1图像旋转
试题编号: 201503-1 试题名称: 图像旋转 时间限制: 5.0s 内存限制: 256.0MB 问题描述: 旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度. 计算机中的 ...
- *5-1 CCF 2015-03-1 图像旋转
图像旋转 题目描述 源代码 关于这题 题目描述 源代码 #include<iostream> #include<cstring> using namespace std;//C ...
- CCF201503-1 图像旋转(100分)
试题编号: 201503-1 试题名称: 图像旋转 时间限制: 5.0s 内存限制: 256.0MB 问题描述: 问题描述 旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度. ...
- 应用OpenCV进行图像旋转和平移
简 介: 本文中,你了解了了如何通过OpenCV完成对于图像的旋转和平移.我们首先通过 getRotationMatrix2D() 获取2D旋转矩阵,然后完成了对于图像的旋转.具体是通过warpAff ...
- freeImage图像旋转滤波
原文:http://www.cnblogs.com/wangshide/archive/2012/04/25/2470693.html 1. 使用了 freeImage 图像库进行图像读取,保存(如何 ...
- 【Android RTMP】NV21 图像旋转处理 ( 图像旋转算法 | 后置摄像头顺时针旋转 90 度 | 前置摄像头顺时针旋转 90 度 )
文章目录 安卓直播推流专栏博客总结 一. 后置摄像头顺时针旋转 90 度 二. 前置摄像头顺时针旋转 90 度 三. NV21 格式图像旋转代码 安卓直播推流专栏博客总结 Android RTMP 直 ...
- 信息学奥赛一本通(1127:图像旋转)
1127:图像旋转 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 20701 通过数: 12507 [题目描述] 输入一个nn行mm列的黑白图像,将它顺时 ...
- CCF201503-1 图像旋转
试题编号: 201503-1 试题名称: 图像旋转 时间限制: 5.0s 内存限制: 256.0MB 问题描述: 旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度. 计算机中的 ...
- CCF201503-1 图像旋转(100分)【数学计算】
试题编号: 201503-1 试题名称: 图像旋转 时间限制: 5.0s 内存限制: 256.0MB 问题描述: 问题描述 旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度. ...
最新文章
- FreeBSD Ports加速的方法
- 扎克伯格、张一鸣、宿华都公开道歉,AI算法不灵了吗?
- java maven 读写pdf_java读取pdf内容
- 【Linux使用技巧】linux 死机了怎么办
- SharePoint 2013 配置HTTPS(SSL)
- 放个手机在单位自动打卡_钉钉自动打卡(家校打卡,寒假特辑)
- 永磁直驱风力发电机结构图_国内首台10MW海上永磁直驱风力发电机研制成功
- 深入理解.bin文件和.nb0文件的结构
- 上班又能摸鱼啦!在M1芯片的macbook上刷朋友圈可还行?
- Linux下进程隐藏的常见手法及侦测手段
- MFC调用Qt生成的dll
- sqlyog同步mysql_大坑:用SQLyog连mysql的部分操作不能同步到从库
- 发布会不用开了?三星Galaxy Note 10 Plus完整规格泄露
- 游标sql server_学习SQL:SQL Server游标
- Python -- 使用if语句处理列表
- 云脉H5文档识别的性能评估指标
- LANDESK8.8版本操作说明书之服务器安装
- Stimulsoft Reports.JAVA 2022.4.3 Crack
- QQ空间视频下载详细教程(手机端)
- go第三方日志库uber-go/zap、lumberjack
热门文章
- c语言srand函数作用,C语言之rand()和srand()函数
- OpenDrive地图格式解析——案例分析
- 日系插画学习笔记(十):色彩基础
- java代码实现流程中的会签_一个简单的会签实例
- 桌面上计算机图标老是自动删除,win7系统总是自动删除桌面快捷方式怎么办
- 神圣罗马帝国(1157~1806)
- ERP是什么管理系统?
- 阿里云香港服务器解析后域名无法访问
- (OK) MIMP - 18 ( 5 nodes) - 抓包-缺少 MPTCP-JION - 分析 mptcp-kmsg-client-5-nodes-no-ping.txt
- xp系统dns服务器异常,电脑dns异常怎么修复,电脑dns异常修复方法介绍