JAVA螺旋隊列

import static java.lang.Math.abs;//靜態引入
import static java.lang.Math.max;

public class SpiralQueue {

 /**
  * JAVA版螺旋隊列
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  SpiralQueue queue=new SpiralQueue();
  
  int x,y;
  int N=3;//打印的層數
  for (y = -N; y <=N; y++) {
   for (x=-N; x <=N; x++) {
    System.out.print(queue.Spiral_Queue(x,y)+"\t");
   }
   System.out.println();
  }
  
  
  System.out.println(queue.Spiral_Queue(2, 2));

 }

 // 輸入座標,輸出相應的數字
 public int Spiral_Queue(int x, int y) {
  int val = 0;// 該座標對應的數值
  int t = max(abs(x), abs(y));// 該座標對應的層數

  if (y == -t) // 北邊(北邊的判斷分支要先於東邊,這是爲了東北角最大值考慮的)
   val = square(2*t-1)+7*t+x;
  else if (y == t) // 南邊
   val = square(2*t-1)+3*t-x;
  else if (x == -t) // 西邊
   val = square(2 * t - 1) + 5 * t - y;
  else if (x == t) // 東邊
   val = square(2 * t - 1) + t + y;
  
  return val;


 }

 private int square(int i) {
  // TODO Auto-generated method stub
  return i * i;
 }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章