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