java,根据对角线打印矩阵
来源:互联网 发布:mac版的easysketch 编辑:程序博客网 时间:2024/06/06 03:42
1. 问题描述:
输入一个矩阵,从右上角开始按照斜对角线打印矩阵的值,如矩阵为:
1, 2, 3, 4
5, 6, 7, 8
9, 10, 11, 12
13,14, 15, 16
输出:
4, 3, 8, 2, 7, 12, 1, 6, 11, 16, 5, 10, 15, 9, 14, 13
2. 思路:
思路:
将整个输出以最长的斜对角线分为两部分:右上部分和左下部分。
右上部分:对角线的起点在第一行,列数递减,对角线上相邻元素之间横坐标和纵坐标均相差1;
左下部分:对角线的起点在第一列上,行数递减,对角线上相邻元素之间横坐标和纵坐标均相差1;
输入一个矩阵,从右上角开始按照斜对角线打印矩阵的值,如矩阵为:
1, 2, 3, 4
5, 6, 7, 8
9, 10, 11, 12
13,14, 15, 16
输出:
4, 3, 8, 2, 7, 12, 1, 6, 11, 16, 5, 10, 15, 9, 14, 13
2. 思路:
思路:
将整个输出以最长的斜对角线分为两部分:右上部分和左下部分。
右上部分:对角线的起点在第一行,列数递减,对角线上相邻元素之间横坐标和纵坐标均相差1;
左下部分:对角线的起点在第一列上,行数递减,对角线上相邻元素之间横坐标和纵坐标均相差1;
复杂度:O(n^2)
3.代码
public class Main { public static void main(String[] args) { Main main = new Main(); int[][] a = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; main.print(a,4); } private void print(int a[][], int n) { int row; int col; //输出右上角代码,包括对角线上的元素 for (int i = n - 1; i >= 0; i--) {//每次都是从第0行开始,所以需要row = 0,然后row col 同时自增 row = 0; col = i; while (row >= 0 && row < n && col >= 0 && col < n) { System.out.println(a[row][col]); row++; col++; } } //for输出左下角代码,对角线上的元素已经打印完了,所以在这里从1开始 for (int i = 1; i <= n - 1; i++) {//每次都是从第0列开始,所以需要col = 0,然后row col 同时自增 row = i; col = 0; while (row >= 0 && row < n && col >= 0 && col < n) { System.out.println(a[row][col]); row++; col++; } } }//print}////4//3//8//2//7//12//1//6//11//16//5//10//15//9//14//13
阅读全文
0 0
- java,根据对角线打印矩阵
- 斜对角线打印矩阵
- 沿对角线打印矩阵
- 根据输入对角线长打印空心菱形算法
- 【Java学习之代码学习】 Prog35_矩阵对角线元素之和
- java 求一个3*3矩阵对角线元素之和
- 二维数组对角线打印
- 实现矩阵对角线输出
- 实现矩阵对角线输出
- 沿对角线填充矩阵
- 沿对角线填充矩阵
- 沿对角线填充矩阵
- 沿对角线填充矩阵
- 沿对角线填充矩阵
- 沿对角线填充矩阵
- 沿对角线填充矩阵
- 沿对角线填充矩阵
- 沿对角线填充矩阵
- 浅谈SEO优化-站点优化(3)
- java TCP/IP Socket编程-----发送和接受数据-----笔记7
- Jenkins安装(Windows环境)
- YII2框架学习 高效篇(三) 片段缓存与页面缓存
- Bash Scripts-I
- java,根据对角线打印矩阵
- Standards-zigbee-smart-energy-1-2-revision-4
- c++(冰雹序列)
- HorizontalScrollView+Viewpager
- HDU-5437-模拟-优先队列
- 对象是否存活
- NumPy的详细教程
- NVIDIA Jetson TX1 系列开发教程之五:CAFFE安装与NVIDIA多媒体例程测试
- 蚂蚁分类信息系统5.8 数据标签调用方法(三)