java实现转方阵
JAVA 实现
2023-09-14 08:58:09 时间
/*
对一个方阵转置,就是把原来的行号变列号,原来的列号变行号
例如,如下的方阵:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
转置后变为:
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
但,如果是对该方阵顺时针旋转(不是转置),却是如下结果:
41
13 9 5 1
14 10 6 2
15 11 7 3
16 12 8 4
下面的代码实现的功能就是要把一个方阵顺时针旋转。
*/
public class Demo03 {
// 矩阵顺时针旋转
public static void rotation(int[][] n,int [][] m,int i,int j){
int t = j; // 标记最后一行的位置
if(i>=n.length) return;
for(int k=0;k<n.length;k++){
m[i][k] = n[j--][i]; // 解决一行
}
rotation(n,m,++i,t); // 递归解决下一行
}
// 输出矩阵
public static void print(int[][] t){
for(int[] x: t){
for(int y:x){
System.out.print(y+"\t");
}
System.out.println();
}
}
public static void main(String[] args){
int[][] n = {
{1 ,2 ,3 ,4 },
{5 ,6 ,7 ,8 },
{9 ,10,11,12},
{13,14,15,16}
};
print(n); // 显示原矩阵
int len = n.length;
int[][] m = new int[len][len]; // 目标矩阵
rotation(n,m,0,len-1); // 矩阵顺时针旋转
System.out.println("顺时针旋转结果:");
print(m); // 显示目标矩阵
}
}
运行结果:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
42
顺时针旋转结果:
13 9 5 1
14 10 6 2
15 11 7 3
16 12 8 4
相关文章
- java基础知识回顾之java Thread类学习(四)--java多线程安全问题(锁)
- java实现九九乘法表的输出
- java实现打印等腰三角形
- Java实现 LeetCode 718 最长重复子数组(动态规划)
- Java实现 LeetCode 406 根据身高重建队列
- Java实现 LeetCode 388 文件的最长绝对路径
- Java实现 LeetCode 328 奇偶链表
- Java实现 LeetCode 199 二叉树的右视图
- java实现第六届蓝桥杯九数分三组
- java实现第六届蓝桥杯垒骰子
- Java实现有向图强连通分量的Tarjan算法
- java实现排列序数
- Java 实现 蓝桥杯 等额本金
- Java实现矩阵相乘问题
- Java实现 蓝桥杯VIP 算法训练 入学考试
- Java实现蓝桥杯历届试题兰顿蚂蚁
- JAVA 中的MessageDigest类和Mac类的使用
- java之类加载机制
- Java接口修饰符详解
- 总共4行代码使用fastxml.json实现Java对象的序列化和反序列化
- atitit.基于虚拟机的启动器设计 --java 启动器 java生成exe
- paip.指针 引用 c++ java的使用总结.
- 华为OD机试 - 快递投放问题(Java & JS & Python)
- 华为OD机试 - 玩牌高手(Java & JS & Python)
- Java 时间操作
- Java的二十三种设计模式(建造者模式(Builder))
- Java桥接模式:打破继承束缚,优雅实现多维度变化