2016年腾讯机试一题——蛇形矩阵输出


题目描述:如何给一个N*M的矩阵输出一个逆时针螺旋读取的元素;

在题目看完时;就想起的程序员面试金典这本书里面一道类似的题目;原题要求是实现N*N矩阵元素的旋转换位;相比这道题不同之处在于,(1)矩阵的形状变的更随意了;(2)矩阵层次感还是一样的;(3)原来的元素值交换成了赋值;

其中可借鉴的思想:矩阵的层次性,元素存储过程/步骤;

 1 package shounue;
 2 import java.util.Scanner;
 3 public class snakeArrays {
 4   public static void main(String[] args){
 5       Scanner in = new Scanner(System.in);
 6       int column = in.nextInt();
 7       int row = in.nextInt();
 8       int [][] arrays = new int [row][column];
 9       int layers = 0;
10       int reallayer = 0;
11       int count = 1;
12       if(column < row) layers =((column % 2) == 0 ? (column/2) : (column/2 +1)); 
13       else layers =((row % 2) == 0 ? (row/2) : (row/2 +1));
14       System.out.println(layers);
15       for(;reallayer < layers; reallayer++){
16           int i, j; //分别是行标记器和列标记器
17           for(i = reallayer; i < column - reallayer; i++)//上赋值
18               arrays[reallayer][i] = count++;
19           i--;
20           for(j = reallayer + 1; j < row - reallayer; j++)//右赋值
21               arrays[j][i] = count++;
22           j--;
23           for(i--;i >= reallayer; i--) //下赋值
24               arrays[j][i] = count++;
25           i++;
26           for(j--; j > reallayer; j--)
27               arrays[j][i] = count++;
28       }
29       for(int y = 0; y < row; y++)
30       {for(int x = 0 ; x < column; x++)
31       {
32          System.out.print(arrays[y][x]);
33          System.out.print(" ");
34       }
35       System.out.println();
36       }
37   }
38 }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM