輸入4打印出java
1 12 11 10
2 13 16 9
3 14 15 8
4 5 6 7 this
輸入5打印出code
1 16 15 14 13
2 17 24 23 12
3 18 25 22 11
4 19 20 21 10
5 6 7 8 9
get
一個逆時針循環疊加的操做,代碼以下it
import java.util.ArrayList; import java.util.List; public class Demo1 { private int num=0 ; private List<String[]> arrs ; private int numSer = 0 ; public static void main(String[] args) { new Demo1().start(5); } public void start(int num){ this.num = num ; if(this.num<0){ System.out.println("不可小於0"); return ; } arrs = new ArrayList<String[]>() ; String[] itemArr= null ; for(int i=0 ;i<num;i++){ itemArr = new String[num] ; arrs.add(itemArr) ; } bot(0, -1); for(String[] items:arrs){ for(String s:items){ System.out.print(s+"\t"); } System.out.println(); } } //下 private void bot(int x , int y){ y++; boolean isbrek = false ; int len = num -y ; //System.out.println("x:"+x+",y:"+y); if(arrs.get(y)[x]!=null){ return ; } for(;y<len;y++){ if(arrs.get(y)[x]!=null){ isbrek = true ; y--; break ; } numSer++ ; arrs.get(y)[x] = numSer+"" ; } if(!isbrek){ y--; } right(x, y); } //右 private void right(int x , int y){ x++ ; boolean isbrek = false ; int len = num - x ; if(arrs.get(y)[x]!=null){ return ; } for(;x<=len;x++){ if(arrs.get(y)[x]!=null){ isbrek = true ; x--; break ; } numSer++ ; arrs.get(y)[x] = numSer+"" ; } if(!isbrek){ x-- ; } up(x,y) ; //System.out.println("x:"+x+",y:"+y); } //上 private void up(int x , int y){ y-- ; boolean isbrek = false ; if(arrs.get(y)[x]!=null){ return ; } for(;y>=0;y--){ if(arrs.get(y)[x]!=null){ isbrek = true ; y++; break ; } numSer++ ; arrs.get(y)[x] = numSer+"" ; } if(!isbrek){ y++; } left(x, y); } //左 private void left(int x , int y){ x-- ; boolean isbrek = false ; if(arrs.get(y)[x]!=null){ return ; } for(;x>=0;x--){ if(arrs.get(y)[x]!=null){ isbrek = true ; x++; break ; } numSer++ ; arrs.get(y)[x] = numSer+"" ; } if(!isbrek){ x++ ; } bot(x, y); } }
,我的紀錄class