编程大题练习题

折叠方阵。n阶回转折叠方阵是把起始数1置于方阵的左上角,然后从起始数开始递增,偶数层从第1行开始,先竖向下再折转向右:奇数层从第1列开始,先横向右再竖向上,呈首尾连接,层层折叠地排列为回转折叠方阵。如图所示。设计递归算法,编程实现。
请输入:5
   1   2   9  10  25 
   4   3   8  11  24  
   5   6   7  12  23 
  16  15  14  13  22 
  17  18  19  20  21

 

/*
 * 分析:主要是分析流程(规律)
 * 
 *      1.从 上 到 下  
 *             |        ^
 *             |        |  4.
 *             |        |  从
 *             V        |  下
 *    <- - - - -        |  往
 *     2. 从 右 往 左    |  上
 *                      |    
 *    - - - - - - - - ->
 *      3.从 左 往 右
 *     
 *      
 *      
 */
import java.util.Scanner;
public class Matrix {
 public static void main(String[] args) {
  Scanner input = new Scanner(System.in);
  System.out.print("请输入:");
  int n = input.nextInt();
  int value = 0;
  int x = 0,y=0;
  int num[][] = new int[n][n];
  num[x][y] = ++value;
  while(n>1){
   if (x == 0) {
    y++;
    while (y >= x) { // 从上到下,从2开始算
    num[x][y] = ++value;
    x++;
    }
    x--;y--;
    while (y >= 0) {// 从右往左
    num[x][y] = ++value;
    y--;
    }
    y++;
   }
   if (x >= n - 1 || y >= n - 1)
    break;
   if (y == 0) {
    x++;
    while (y <= x) { // 从左往右
    num[x][y] = ++value;
    y++;
    }
    y--;x--;
    while (x >= 0) {// 从下往上
    num[x][y] = ++value;
    x--;
  }
 }
   x++;
   if (x >= n - 1 || y >= n - 1)
   break;
  }
         //遍历二维数组
  for (int i = 0; i < num.length; i++) {
   for (int j = 0; j < num[i].length; j++) 
    System.out.printf("%4d", num[i][j]); 
   System.out.println();
  }
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值