蛇形矩陣(非方陣)的一種實現形式
阿新 • • 發佈:2019-01-26
其實我幾乎沒用過Java,所以原始碼中的一些地方不是很規範,僅供參考。package macor.matrix; import java.util.*; public class NMMatrix { int n; int m; public NMMatrix(int n, int m){ this.n = n; this.m = m; } public void generateArray(int n,int m){ int i = 0; //行 int j = 0; //列 int k = 1; //運動方向. k =1 表示運動方向為從左往右移動;k=2 表示從右上角往左下角移動; k=3 表示向下移動 ;k=4 表示從左下角網右上角移動 int [][] data =new int [n][m]; data[0][0] = 1; while( i!=n-1 || j !=m-1){ // System.out.println("i="+i+" j="+j+" d="+data[i][j]+ " k="+k); if(k == 1){ data[i][j+1] = data[i][j] + 1; j = j + 1; if(i == n-1){ k = 4; }else{ k = 2; } }else if(k == 2){ data[i+1][j-1] = data[i][j] + 1; j = j - 1; i = i +1; if( j == 0 && i != n-1){ k = 3; }else if( i == n-1){ k = 1; }else{ k = 2; } }else if(k == 3){ data[i+1][j] = data[i][j] + 1; i = i+1; if( j == m-1){ k = 2; }else { k = 4; } }else if(k == 4){ data[i-1][j+1] = data[i][j] + 1; j = j + 1; i = i - 1; if(i == 0 && j != m-1){ k = 1; }else if( j == m-1 ) { k = 3; }else{ k = 4; } } } //System.out.println("Finished"); //System.out.println("i="+i+" j="+j+" d="+data[i][j]+ " k="+k); System.out.println("生成的矩陣如下:"); //顯示矩陣 for(int a=0;a<n;a++){ for(int b=0;b<m;b++){ System.out.print(data[a][b]+"\t"); } System.out.println(); } } public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); System.out.println("請輸入矩陣的行數:"); int n = in.nextInt(); System.out.println("請輸入矩陣的列數:"); int m = in.nextInt(); NMMatrix mt = new NMMatrix(n,m); mt.generateArray(n, m); } }