黑马程序员技术交流社区

标题: 好久没想过算法类的题了,今天就一个螺旋循环呢 [打印本页]

作者: SwallowJin    时间: 2016-7-23 16:13
标题: 好久没想过算法类的题了,今天就一个螺旋循环呢
写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印:

1        2        3        4
12        13        14        5
11        16        15        6
10        9        8        7


答案:
package test7;

import java.util.Scanner;

public class Test7 {

        public static void main(String[] args) {
                Scanner input = new Scanner(System.in);
                int n = input.nextInt();
                int[][] arr = new int[n][n];
                int l = 0,r=n,s=0,x=n;
                int k = 1;
                while(k<=n*n){
                        for(int i=l;i<r;i++){
                                arr[s][i]=k;
                                k++;
                        }
                        s++;
                        for(int i=s;i<x;i++){
                                arr[i][r-1]=k;
                                k++;
                        }
                        r--;
                        for(int i=r-1;i>=l;i--){
                                arr[x-1][i]=k;
                                k++;
                        }
                        x--;
                        for(int i=x-1;i>=s;i--){
                                arr[i][l]=k;
                                k++;
                        }
                        l++;
                }
                for(int i=0;i<n;i++){
                        for(int j=0;j<n;j++){
                                System.out.print(arr[i][j]+"\t");
                        }
                        System.out.println();
                }
        }
}







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2