图片旋转

简介: 图片旋转

题目描述

    图片旋转是对图片最简单的处理方式之一,在本题中,你需要对图片顺时针旋转90度。

我们用一个nxm的二维数组来表示一个图片,例如下面给出一个3x4的图片的例子:

1 3 5 7
9 8 7 6
3 5 9 7
这个图片顺时针旋转90度后的图片如下:
3 9 1

5 8 3

9 7 5

7 6 7
给定初始图片,请计算旋转后的图片。
输入描述:

    输入的第一行包含两个整数nm,分别表示行数和列数。

接下来n行,每行m个整数,表示给定的图片。图片中的每个元素(像素)为一个值为0至255之间的整数(包含0和255)。
输出描述:

    输出m行n列,表示旋转后的图片

那这道题就比较简单了,旋转后的第一行对应的就是旋转前的第一列对吧,那这样很多人就会想不就是

后【i】【j】 = 前【j】【i】

得到的结果却是:

e9a48567dacf4e7cb80c8216048e34e1.png

很多人以为直接换就是了,其实不然,你会发现这样替换的话,得到的结果和每一行的次序刚好颠倒了,为什么呢,因为就是第一行第一列的值旋转后要到第一行最后一列去了;

因此应该这样替换

后【i】【j】= 前【n-1-j】【i】

得到的结果是:

0faa427009234d48836424df60f0b124.png

这样得到的结果才是正确的

好,直接上代码:

import java.util.Scanner;

public class day05 {

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    //定义行和列
    int n;
    int m;
    n = scanner.nextInt();
    m = scanner.nextInt();
    //输入元素值
    int[][] image = new int[n][m];
    for(int i=0;i<n;i++) {
        for (int j = 0; j < m; j++) {
            image[i][j] = scanner.nextInt();
        }
    }
    //进行值替换
    int [][] laterImage = new int[m][n];
    for(int i=0;i<m;i++) {
        for (int j = 0; j < n; j++) {
            laterImage[i][j] = image[n-1-j][i];
        }
    }
    //打印结果
    for(int i=0;i<m;i++) {
        for (int j = 0; j < n; j++) {
            System.out.print(laterImage[i][j] + " ");
        }
        System.out.println();
    }
}

}

相关文章
|
存储 Windows
怎样格式化硬盘?四种硬盘格式化方法(含详细图文步骤)
这篇内容介绍了硬盘格式化的方法,包括为何要格式化硬盘(如快速清空数据、建立新分区、修复错误、改变文件系统类型)和四种格式化方式:1) 使用文件管理器,2) 通过磁盘管理器,3) 利用分区工具DiskGenius,4) 使用diskpart命令。在执行格式化前,务必备份重要数据,因为格式化会导致数据丢失。
|
JavaScript 前端开发 Java
如何使用这个正则表达式来验证一个字符串是否符合特定的格式要求?
如何使用这个正则表达式来验证一个字符串是否符合特定的格式要求?
|
移动开发 前端开发
基于jeecg-boot的flowable流程历史记录显示修改
基于jeecg-boot的flowable流程历史记录显示修改
344 0
|
程序员 开发者 Python
【Python】已解决:Traceback (most recent call last): File “C:/python/kfc.py”, line 8, in KfcError: KFC Cra
【Python】已解决:Traceback (most recent call last): File “C:/python/kfc.py”, line 8, in KfcError: KFC Cra
1444 0
|
消息中间件 JSON Java
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
28583 0
如何实现图片垂直旋转90度的问题
如何实现图片垂直旋转90度的问题
102 2
|
Ubuntu Linux Go
嵌入式Linux系列第19篇:如何高效的阅读Linux源码
嵌入式Linux系列第19篇:如何高效的阅读Linux源码
|
网络协议 Java Unix
Linux操作系统
Linux和Windows均属于操作系统的范畴,和windows不同的是,他没有像Windows有图形化界面,可以鼠标点点点,Linux所有操作都是命令行操作,Linux不同于Windows,是个开源的操作系统,全世界有很多的开发者都参与到Linux的建设中。 Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机。 ———————————————— 版权声明:本文为CSDN博主「苍何fly」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_43270074/article/d
951 0
Linux操作系统
|
搜索推荐
物流公司网站模板_物流企业网站模板下载
网站模板下载地址:http://www.pageadmin.net/moban/1144.cshtml介绍:物流公司网站模板,Div+Css结构,代码干净,搜索引擎更易收录,网站模板精心设计制作,用于物流公司,品牌官方网站的网站建设和网站制作网站模板首页效果图:
2849 0
|
Android开发 前端开发 Windows
更换 字体
引用:http://zhidao.baidu.com/question/297919794.html .自定义字体 android Typeface使用TTF字体文件设置字体 我们可以在程序中放入ttf字体文件,在程序中使用Typeface设置字体。
1270 0