zoukankan      html  css  js  c++  java
  • 打印zigzag矩阵

    比较愚蠢但是很好理解的一种方法

    public static void printZigzag (int n){
    		int[][] arr = new int[n][];
    		//动态创建数组 并初始化
    		for (int i = 0; i < arr.length; i ++)
    		{
    			arr[i] = new int[n];
    			Arrays.fill(arr[i], 0);
    		}
    		
    		int num = 0, flag = 0;
    		int row = 0, col = 0;
    		//处理 左上三角阵
    		for (row = 0; row < arr.length; row ++)
    		{
    			col = 0;
    			// 偶数行
    			if(row%2==0){
    				num = row*(row+1)/2;
    				flag=1;
    			}
    			// 奇数行
    			if(row%2==1)
    			{
    				num = row*(row+1)/2 + row;
    				flag=-1;
    			}
    			for(int i = 0; i < row+1; i++)
    			{
    				arr[row-i][col+i] = num + i*flag;
    			}
    			
    		}
    		
    		// 同理 处理右下三角阵
    		for (row = 0; row < arr.length - 1; row ++)
    		{
    			int newRow = n-1-row;
    			int newCol = n-1;
    			
    			//偶数行
    			if(row%2==0){
    				num = n*n-1 - (row*(row+1)/2);
    				flag = -1;
    			}
    			//奇数行
    			if(row%2==1){
    				num = n*n-1 - (row*(row+1)/2) - row;
    				flag = 1;
    			}
    			
    			for(int i = 0; i < row+1; i++)
    			{
    				arr[newRow+i][newCol-i] = num + i*flag;
    			}
    		}
    		
    		
    		
    		for (int[] a : arr) {
    			for (int i : a) {
    				System.out.printf("%3d", i);
    			}
    			System.out.println();
    		}
    		
    	}
    

      

  • 相关阅读:
    主席树学习记录
    P1072 Hanson 的趣味题 题解
    好文章收集
    计算几何专题
    小问题
    CSP-S2020题解
    上下界网络流
    想到的无法解决的点子
    省选联考2020组合数问题
    省选数学复习
  • 原文地址:https://www.cnblogs.com/OliverZhang/p/6479303.html
Copyright © 2011-2022 走看看