一个网友问了一个这样的问题,问题的内容如下:
在控制台输入一个整数4等到下面的矩阵,
0 1 2 3
1 1 2 3
2 2 2 3
3 3 3 3
然后通过矩阵变换成如下状态:
0 0 0 0
0 1 1 1
0 1 2 2
0 1 2 3
首先,第一个思路是想到的思路是利用矩阵变化公式,但是,头脑里想不起来半个公式。所以,这个思路放弃。
然后,通过观察这个矩阵的特点是个对称的(对称矩阵),变化后的矩阵也是对称的,通过根数组结合起来思考,我突然发现了一个规律,如下所示:
(1)
0123 ---- (i,j)--- (0,0)(0,1)(0,2)(0,3)
1123 映射 (1,0)(1,1)(1,2)(1,3)
2223 (2,0)(2,1)(2,2)(2,3)
3333 (3,0)(3,1)(3,2)(3,3)
(2)
0000 ---- (i,j)--- (0,0)(0,1)(0,2)(0,3)
0111 映射 (1,0)(1,1)(1,2)(1,3)
0122 (2,0)(2,1)(2,2)(2,3)
0123 (3,0)(3,1)(3,2)(3,3)
|------发现规律如下------|
从变化后的矩阵和一个二维数组存储访问下标对比,发现了矩阵(1)是正好是每个存储单元中的最大的下标,矩阵(2)是正好是每个存储单元中的最大的下标这时,解决方案豁然开朗。即,只要写个求最大值和最小值的方法
public static int max(int x, int y) {
return x > y ? x : y;
}
public static int min(int x, int y) {
return x < y ? x : y;
}
我利用Java的简单实现代码如下:
package com.demo;
import java.util.InputMismatchException;
import java.util.Scanner;
/**
* about a simple solution to change the matrix
*
* @author Frank
* @since 1.0
*/
public class Matrix {
/**
*
* @param x
* integer value
* @param y
* integer value
* @return the minimum value between x and y.
*/
public static int min(int x, int y) {
return x < y ? x : y;
}
/**
*
* @param x
* integer value
* @param y
* integer value
* @return the maximum value between x and y.
*/
public static int max(int x, int y) {
return x > y ? x : y;
}
public static void main(String[] args) {
Scanner read = new Scanner(System.in);
int n = 4;//default value
try {
n = read.nextInt();
} catch (InputMismatchException e) {
e.printStackTrace();
} finally {
System.out.println("*********变换前的矩阵***********");
int[][] oldMatrix = new int[n][n];
for(int i = 0;i<n;i++){
for(int j = 0;j<n;j++){
oldMatrix[i][j] = max(i,j);
}
}
for(int i = 0;i<n;i++){
for(int j = 0;j<n;j++){
System.out.print(oldMatrix[i][j]);
}
System.out.println();
}
System.out.println("*********变换后的矩阵***********");
int[][] newMatrix = new int[n][n];
for(int i = 0;i<n;i++){
for(int j = 0;j<n;j++){
newMatrix[i][j] = min(i,j);
}
}
for(int i = 0;i<n;i++){
for(int j = 0;j<n;j++){
System.out.print(newMatrix[i][j]);
}
System.out.println();
}
}
}
}
分享到:
相关推荐
安川矩阵变换器以其革命性的技术突破,在提高能源利用效率的同时,也解决了传统逆变器存在的诸多问题。无论是从技术创新还是实际应用的角度来看,该产品都是推动工业驱动技术进步的重要里程碑。随着技术的不断进步和...
### 矩阵变换法求逆矩阵C++详解 在数学和计算机科学领域,矩阵的逆矩阵是一个重要的概念,尤其在解决线性方程组、数据处理和图形学等领域有广泛应用。逆矩阵的计算方法多样,其中一种常用且高效的方法是矩阵变换法...
在数学的线性代数领域,常量矩阵变换是一种重要的工具,主要用于简化矩阵运算,特别是进行初等变换。初等变换是线性代数中解决线性方程组、求解矩阵特征值以及理解矩阵性质的基本方法。这些变换通常包括行交换、行倍...
首先,矩阵变换器结构紧凑,体积小,因为没有大型滤波电容,所以效率较高,便于模块化设计。其次,它能实现能量的双向流动,允许电机在四象限运行,增强了系统的灵活性。此外,矩阵变换器具有大的控制自由度,可以...
近年来,关于矩阵变换器的研究层出不穷,强调了其在效率和性能上的优越性。 然而,矩阵变换器的控制策略是实现这些优势的关键。常见的控制方法包括空间矢量调制(SVM),它侧重于输出电压的调制。然而,由于矩阵...
针对采用空间矢量间接调制算法的矩阵变换器,提出一种改进的自抗扰控制策略,用来解决矩阵变换器输出侧性能易受输入侧扰动影响的问题。根据传统自抗扰控制器的基本原理,重新对控制器状态误差反馈模块的非线性函数进行...
与传统的AC/DC/AC变换器相比,矩阵变换器没有中间的直流环节,因此它具有体积小、功率密度大、提供正弦的输入电压和电流、可调节的功率因数以及能够实现能量的双向流动等特点。这些优点使得矩阵变换器在电力电子领域...
典型的三相-三相矩阵变换器适用于低压小功率应用,而针对大功率高压场景,文献提出了背靠背模块化多电平矩阵变换器和模块化级联型矩阵变换器。 模块化级联型矩阵变换器通过三相-单相矩阵变换器替代级联H桥变流器中...
【资源说明】3dtilset模型矩阵变换+使用说明.zip3dtilset模型矩阵变换+使用说明.zip3dtilset模型矩阵变换+使用说明.zip3dtilset模型矩阵变换+使用说明.zip使用 在项目中引入Cesium.js 在项目中引入dat.gui.js 然后...
【数字图像处理中矩阵变换的应用探索】 数字图像处理是一门多学科交叉的前沿技术,它在计算机科学、信号处理和视觉艺术...通过深入理解和熟练应用矩阵变换,可以解决许多实际问题,并在图像处理领域创造更多的可能性。
矩阵变换器在工作时需要通过换流策略来实现功率器件间的切换,传统上主要采用电流型换流策略,但该策略在小电流条件下不易检测,且换流过程存在困难。基于这些问题,研究者提出了电压型半自然两步换流策略。该策略...
在计算机科学中,矩阵变换和计算是数值线性代数的核心部分,涉及到解决线性方程组和计算特征系统的问题。本章重点介绍了通过矩阵的三角分解来简化计算过程,尤其是对Gauss消去法、LU分解、平方根法(Cholesky分解)...
在研究生级别的矩阵论课程中,线性代数的深度与广度都会得到显著提升,尤其在探讨线性空间、线性子空间、线性变换以及各种矩阵分解方法时。线性空间是研究线性组合的基础,它是一组向量构成的集合,并且满足加法、...
在小结部分,提到了初等行变换在三个方面的应用:求逆、判断矩阵可逆性和解矩阵方程。同时,教案也引发了思考:如果已知 \( AX=B \),如何利用初等变换求解X?这个问题鼓励学生进一步探索初等变换的潜力。 总的来说...
在解决对应点集的刚体变换问题时,我们通常假设存在一个3x4的齐次变换矩阵R|t,其中R是旋转部分,t是平移向量。对于两组对应点P和Q,我们可以构建一个4x4的增广矩阵M,它的每个行由一对对应点的坐标构成,形式为[P;...
12. 多次矩阵变换:连续的矩阵变换MN会使图形发生复合变化,计算每个变换后的点坐标,从而确定最终图形的面积。 13. 确定矩阵M:根据变换前后点的坐标,可以通过解线性方程组找到矩阵M,以及应用M变换其他点的坐标...
针对矩阵切换器可能出现的问题,手册中通常会列出常见故障的诊断方法和维护步骤,帮助用户或技术人员快速解决问题。 总的来说,矩阵切换器是现代信号传输系统的核心组成部分,通过灵活的控制机制和丰富的接口选择,...