public class Test4 { /* 01--02 06--07 15--16 28--29 / / / / / / / 03 05 08 14 17 27 30 43 | / / / / / / / | 04 09 13 18 26 31 42 44 / / / / / / / 10 12 19 25 32 41 45 54 | / / / / / / / | 11 20 24 33 40 46 53 55 / / / / / / / 21 23 34 39 47 52 56 61 | / / / / / / / | 22 35 38 48 51 57 60 62 / / / / / / / 36--37 49--50 58--59 63--64 */ public static void main(String[] args) { Test4 t=new Test4(); t.printData(t.test2(8)); } //核心算法 public int[][] test2(int n){ int arr[][]=new int[n][n]; for (int i = 0; i < n; i++) { for (int j=0,c=i;j<=i&&c>=0;j++,c--) { if(i%2==0){ //偶数行 if(c==i){ //建立与上次循环的关系 if(c==0) arr[c][j]=1; else arr[c][j]=arr[c-1][j]+1; } else arr[c][j]=arr[c+1][j-1]+1; }else{ //奇数行 if(c==i) arr[j][c]=arr[j][c-1]+1; //建立与上次循环的关系 else arr[j][c]=arr[j-1][c+1]+1; } } } return arr; } //打印数据 public void printData(int arr[][]){ int n=arr.length; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if(arr[i][j]>=10) System.out.print(arr[i][j]+" "); else if(arr[i][j]!=0) System.out.print("0"+arr[i][j]+" "); } System.out.println(); } } }
这道题目我感肯定大家会过瘾,希望有高手可以想出更简单的方法,我的思路就是斜着看,通过斜着的循环打印出该效果“
我的效果如图:
原文地址:http://blog.csdn.net/qgy1994/article/details/25484895