怎么样打印出这样一个图形????
1     2     3     4     5     620    21    22    23   24     719    32    33    34   25     818    31    36    35   26     917    30    29    28   27    1016    15   14    13    12    11

解决方案 »

  1.   

    看来我算法很弱...貌似像我这样低级的coder,算法都是高级货了
      

  2.   

    一个36个数字 那就是6*6
    定义个双重数组6 6
    从小到大排序下
    然后看规律set进去
    >_<
    不写了...
      

  3.   

    public static void main(String[] args) {
    // TODO Auto-generated method stub

    //定义变量
    int n=6;//控制正方形大小
    int z=1;
    int s[][]=new int[n][n];
    int x=0,y=0;

    //控制数据入位
    for(int i=1;i<=n*2-1;i++){

    //往右
    if(i%4==1){
    s[x][y]=z++;//设置正方形包括内正方形的左上角的值
    for(int j=i/4+1;j<n-i/4;j++){
    s[x][++y]=z++;
    }
    }

    //往下
    if(i%4==2){
    for(int j=i/4+1;j<n-i/4;j++){
    s[++x][y]=z++;
    }
    }

    //往左
    if(i%4==3){
    for(int j=i/4+1;j<n-i/4;j++){
    s[x][--y]=z++;
    }
    }

    //往上
    if(i%4==0){
    for(int j=i/4;j<n-i/4;j++){
    s[--x][y]=z++;
    }
    }
    if(i%4==0) y++;//控制移动到内正方形的左上角坐标
    }

    //输出
    for(int i=0;i<n;i++){
    for(int j=0;j<n;j++){
    //控制每个数据占3个位
    if(s[i][j]/10==0){
    System.out.print(s[i][j]+"  ");
    }else{
    System.out.print(s[i][j]+" ");
    }
    }
    System.out.println();
    }
    }