编程实现矩阵,输入参数打印出相应维数的矩阵,如输入4,打印的矩阵为:
0 0 0 0
0 1 1 1
0 1 2 2
0 1 2 3
解题思路:刚拿到这个题的时候脑袋全是乱麻,想想但是怎么就没有好好学习线性代数,当时要是学好了线性代数,那么这个矩阵的规律就能明白,编程也会很轻松。幸好没有慌乱,如果把这道题拿给一个没有学过线性代数或者矩阵相关的知识,我想他也能做出来,接下来我们一步一步来看看这个题目如何解答。
1,先从输入开始,在java中如果用到输入的话我们会想到Scanner类,实例化代码为:Scanner sc = new Scanner(System.in);
之后,把输入的参数赋值给int变量n,代码为:int n = sc.nextInt();
2,接下来我们应该想办法把我们生成的数字存储下来,看到例子的第一眼,我们应该第一个想到二位数组,是的我们可以使用二维数组来存储这些数字,数组实例化代码:int[][] arr = new int[n][n];
3,怎么得到这些值,当然是循环里面。所以我们会用二个for循环:代码如下:
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
//做一些事情
}
}
0 0 0 0
0 1 1 1
0 1 2 2
0 1 2 3
4,好了,让我们来关注所给例子本身把,现在不要想和矩阵有关的任何知识。
看到例子的第一眼,你发现了什么规律?所给例子的对角线和第一层循环的下标相等。所以我们有下面这行代码:
arr[i][i] = i;这样循环之后就会有a[0][0]=0;a[1][1]=1;a[2][2]=2;a[3][3]=3;
再看看还有什么规律?发现了,第一行第一列都是0,把0去掉之后,第一行第一列都是1,依次类推。
所以 arr[i][j]=i;arr[j][i]=i;
好了,一切ok。我们回写下下面的代码:
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
arr[i][i] = i;
arr[i][j] = i;
arr[j][i] = i;
}
}
运行一下ok。与例子完全一样。可不可改进一下。答案是可以的。例如arr[i][i]=i;不用每次循环都设置,所以为了不重复设值,也为了速度更快,我们最好把这行代码放到第一个for循环下。还有就是,第二层for循环我们可以设置j=i+1;这样也可以减少重复设值。
所以最终的for循环如下:
for (int i=0; i<n; i++) {
arr[i][i] = i;
for (int j=i+1; j<n; j++) {
arr[i][j] = i;
arr[j][i] = i;
}
}
最终代码,如下:
import java.util.Scanner;
public class JZ {
/*
*欢迎访问:www.exceptionhelp.com
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
if (n < 1) {
System.out.println("数太小!");
}
int[][] arr = jz(n);
for (int i=0; i<arr.length; i++) {
for (int j=0; j<arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
public static int[][] jz(int n) {
int[][] arr = new int[n][n];
for (int i=0; i<n; i++) {
arr[i][i] = i;
for (int j=i+1; j<n; j++) {
arr[i][j] = i;
arr[j][i] = i;
}
}
return arr;
}
}
输入:5
运行结果:
0 0 0 0 0
0 1 1 1 1
0 1 2 2 2
0 1 2 3 3
0 1 2 3 4
更多信息请访问
http://www.exceptionhelp.com
分享到:
相关推荐
利用networkx,numpy,matplotlib,将邻接矩阵输出为图形。 1,自身确定一个邻接矩阵,然后通过循环的方式添加变,然后输出图像 import networkx as nx import matplotlib.pyplot as plt import numpy as np G = nx...
标题提到的"matlab矩阵输出程序(非指数形式)"正是针对这样一个需求,它避免了MATLAB默认的科学计数法(指数形式)输出,转而采用小数形式,使得数据更直观易读。 MATLAB默认的矩阵输出方式是指数形式,例如`1.234...
根据给定的文件信息,我们可以总结出以下关于“三元组表的建立及矩阵输出”的IT知识点: ### 1. 三元组表的概念 在计算机科学中,尤其是在处理稀疏矩阵时,三元组表(Triple Table)是一种常用的数据结构。它用于...
2. **矩阵输出**:矩阵的输出主要使用`cout`或`ofstream`类。同样,可以遍历二维数组并打印每个元素。例如,使用`cout [i][j] ;`来输出矩阵元素,并在每行结束时添加换行符。使用`ofstream`时,需要创建一个文件流...
C语言螺旋矩阵输出(自创版)与其他人的想法不同!保证可用!仅供交流学习!!!!如有不周之处,私信我,或者加QQ1279632715
09.S形矩阵输出.cpp
用c语言实现动态分配二维矩阵及输出一个二维矩阵
本文将详细探讨如何通过APDL输出这些矩阵,并在Matlab环境中进行后处理。 一、ANSYS APDL与有限元矩阵 1. APDL简介:APDL是ANSYS软件中的脚本语言,用户可以通过编写命令来自动化分析流程,包括建模、网格划分、...
本文将详细讲解如何进行矩阵的加法、减法和乘法运算,以及如何正确输出这些计算结果。 矩阵是由有序的元素数组组成的,每个元素通常是一个实数或复数。矩阵的大小由行数和列数决定,表示为m×n矩阵,其中m是行数,n...
根据给定的信息,本文将详细解析如何在Java中表示矩阵,并能够实现任意N阶矩阵的创建与输出。矩阵是线性代数中的一个重要概念,在计算机科学领域有着广泛的应用,例如图像处理、图形学、机器学习等领域都离不开矩阵...
C语言输出N*M阶的螺旋矩阵 如:5*5 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 3*2 1 2 6 3 5 4
### C语言实现矩阵运算知识点详解 #### 一、概述 本文档将详细介绍如何使用C语言实现矩阵的基本运算,包括加法、减法、乘法、转置以及逆矩阵的计算。这些运算在科学计算、图形处理等领域有着广泛的应用。本文档...
⑵ 编写矩阵输出函数OUTPUT_MAT,通过该函数完成矩阵的输出,输出的形式是标准的矩阵形式(即二维数组的形式);⑶ 求矩阵的转置,矩阵的转置A’=(aji)n×m,转置前输出原矩阵,转置后输出转置矩阵;⑷ 求矩阵A、B的...
2. **矩阵输出**:为了方便查看矩阵内容,可以重载`运算符,使得矩阵可以直接输出到控制台。这需要定义一个友元函数,如下: ```cpp friend std::ostream& operator(std::ostream& os, const Matrix& m); ``` 3. *...
系数矩阵的输出对于理解和分析摄影测量的结果至关重要。 在提供的“摄影测量课程设计”压缩包中,可能包含以下内容: - 实验指导文档,解释了如何进行内定向和前方交会的步骤。 - 数据文件,如图像、标靶坐标、初始...
7. **矩阵输出(PrintSMatrix)** 输出稀疏矩阵的内容,以便于查看和调试。 #### 实验记录 1. **输入非零元素** 使用循环结构,根据用户输入的非零元素个数,逐一读取每个非零元素的行号、列号和值,并检查其...
矩阵的压缩 以及转置后 输出 原始状态的矩阵压缩的三元表形式
根据给定的信息,我们可以深入探讨该程序所涉及的矩阵分解技术——Crout分解,并结合矩阵论的基本概念进行详细解析。 ### Crout 分解方法简介 Crout分解是一种将矩阵分解为一个下三角矩阵 \( L \) 和一个上三角...
(4) 定义矩阵输出函数,将矩阵格式化输出到cout; (5) 定义矩阵相加的函数,实现两个矩阵相加的功能,结果保存在另一个矩阵中; (6) 定义矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一个矩阵中; (7...
(3) 定义矩阵输出函数,将矩阵格式化输出到cout; (4) 定义矩阵相加的函数,实现两个矩阵相加的功能,结果保存在另一个矩阵中; (5) 定义矩阵相减的函数,实现两个矩阵相减的功能,结果保存在另一个矩阵中; (6...