笔试题回形数(Java入门)

public class huixingshu {
    public static void main(String [] args) {
        Scanner in = new Scanner(System.in) ;
        System.out.println("请输入数字");
        int len = in.nextInt() ;
        int[][] arr = new int[len][len] ;
        int s = len * len ;
        // k=1:向右 k=2:向下 k=3:向左 k=4:向上
        int k = 1 ;
        int i = 0 , j = 0 ;
        for(int m = 1 ; m <= s ; m++) {
            if(k == 1) {
                if (j < len && arr[i][j] == 0) {
                    arr[i][j++] = m ;
                } else {
                    k = 2 ;
                    i++ ;
                    j-- ;
                    m-- ;
                }
            }else if(k == 2) {
                if (i < len && arr[i][j] == 0) {
                    arr[i++][j] = m ;
                } else {
                    k = 3 ;
                    i-- ;
                    j-- ;
                    m--;
                }
            } else if(k == 3) {
                if (j >= 0 && arr[i][j] == 0) {
                    arr[i][j--] = m ;
                }else {
                    k = 4 ;
                    i-- ;
                    j++ ;
                    m-- ;
                }
            } else if(k == 4) {
                if(i >= 0 && arr[i][j] == 0) {
                    arr[i--][j] = m ;
                } else {
                    k = 1 ;
                    i++ ;
                    j++ ;
                    m-- ;
                }
            }
        }
        for(int m = 0 ; m < arr.length ; m++) {
            for(int n = 0 ; n < arr[m].length ; n++) {
                System.out.print(arr[m][n] + "\t" );
            }
            System.out.println();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值