矩阵输出_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 矩阵输出

矩阵输出

 2014/4/9 21:45:30  exceptionhelp  程序员俱乐部  我要评论(0)
  • 摘要:编程实现矩阵,输入参数打印出相应维数的矩阵,如输入4,打印的矩阵为:0000011101220123解题思路:刚拿到这个题的时候脑袋全是乱麻,想想但是怎么就没有好好学习线性代数,当时要是学好了线性代数,那么这个矩阵的规律就能明白,编程也会很轻松。幸好没有慌乱,如果把这道题拿给一个没有学过线性代数或者矩阵相关的知识,我想他也能做出来,接下来我们一步一步来看看这个题目如何解答。1,先从输入开始,在java中如果用到输入的话我们会想到Scanner类,实例化代码为
  • 标签:输出 矩阵
编程实现矩阵,输入参数打印出相应维数的矩阵,如输入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
上一篇: java 定时任务 下一篇: 选择排序
发表评论
用户名: 匿名