打印Zig-zag矩阵

输入一个数字i,然后生成i×i的矩阵,矩阵的内容沿45度线递增

如输入4,则矩阵为

0   1   5    6

2   4   7    12

3   8   11  13

9   10  14  15

 

 

Java源代码如下:

import java.io.*;   
public class Zigzag {   
    public static void main(String[] args) throws IOException {   
        int a[][];   
        int size;   
        int input=0;   
        System.out.println("Input the zigzag's size: ");   
        BufferedReader in=new BufferedReader(new InputStreamReader(System.in));   
//      size=Integer.valueOf(in.readLine()).intValue();   
        //上下两句等价   
     size=Integer.parseInt(in.readLine());          
        a=new int[size][size];  
        /*总共有2×size-1条斜对角线,每条对角线上的元素和为对角线的序号*/
        //输入上三角形的内容
     //i其实就是对角线的序号,每个元素的的位置(x,y)保证为x+y=i
     for(int i=0;i<size;i++){   
            if(i%2==0){   
                for(int j=i;j>=0;j--){   //从下向上 
                    a[j][i-j]=input;   
                    input++;   
                }   
            }else{   
                for(int j=0;j<=i;j++){  //从上向下  
                    a[j][i-j]=input;   
                    input++;   
                }   
            }   
        }   
        //输入下三角形的内容,下半部分总共有size-1条对角线
     //i其实就是对角线的序号,每个元素的的位置(x,y)保证为x+y=2*size-1-i
     for(int i=size-1;i>0;i--){   
            if(i%2==1){   
                for(int j=i;j>0;j--){   //从下向上
                    a[size-1-(i-j)][size-j]=input;   
                    input++;   
              }   
         }else{   
             for(int j=0;j<i;j++){   //从上向下 
                  a[size-i+j][size-1-j]=input;   
                    input++;   
                }   
            }   
        }   
        //输出矩阵内容   
        for(int i=0;i<size;i++){   
            for(int j=0;j<size;j++){   
                System.out.print(a[i][j]+" ");   
            }   
            System.out.println();   
        }   
    }   
} 

  
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zsuguangh/archive/2011/03/26/6279216.aspx

你可能感兴趣的:(.net,Blog,J#)