A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© flyingwind 中级黑马   /  2015-11-25 22:42  /  1110 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1 , n阶顺时针螺旋方阵:  
C:\Users\moonriver\Desktop\1.png
代码:
  1. import java.util.Scanner;
  2. public class SpiralMatrix {
  3.         public static void main(String [] args){
  4.                 Scanner scn= new Scanner(System.in);
  5.                 System.out.println("请输入螺旋方阵的阶数: ");
  6.                 int order=scn.nextInt();
  7.                
  8.                 SpiralMatrix sm=new SpiralMatrix();
  9.                 sm.printClockWise(order);
  10.         }
  11.         //找到一个函数能够计算出order阶矩阵中  row 行, col列上的数值大小, 想到递归
  12.         public int getValue(int row, int col, int order) {
  13.                 //基准条件
  14.                 if(1==order)      //最简单的一阶
  15.                         return order;
  16.                 if(0==order)      //偶数阶的最简单形式
  17.                         return order;
  18.                
  19.                 // 高阶矩阵而元素又位于矩阵的最外层, 能够通过简单的计算得出.
  20.                 //由于涉及多个 return语句, 只用if即可 .
  21.                 if(0==row)
  22.                         return col+1;
  23.                 if (col==order-1)
  24.                         return col+row+1;
  25.                 if(row==order-1)
  26.                         return 3*order-2-col;
  27.                 if(0==col)
  28.                         return 4*order-3-row;
  29.                 //所有简单的情况排除后,进行脱阶运算.
  30.                 return (order*4-4)+getValue(row-1, col-1, order-2);
  31.         }
  32.         public void  printClockWise(int order) {
  33.                 int value;
  34. //                int sum=order*order+1;
  35.                 for(int i=0;i<order; i++) {
  36.                         for(int j=0;j<order; j++) {
  37.                                 value=getValue(i,j,order);
  38. //                                value=sum-value;
  39.                                 System.out.print(value+"\t");
  40.                         }
  41.                         System.out.println("\n\n");
  42.                 }
  43.         }
  44. }
复制代码


2,  由内而外的螺旋 方阵
C:\Users\moonriver\Desktop\2.png

代码:
  1. import java.util.Scanner;
  2. public class SpiralMatrix {
  3.         public static void main(String [] args){
  4.                 Scanner scn= new Scanner(System.in);
  5.                 System.out.println("请输入螺旋方阵的阶数: ");
  6.                 int order=scn.nextInt();
  7.                
  8.                 SpiralMatrix sm=new SpiralMatrix();
  9.                 sm.printClockWise(order);
  10.         }
  11.         //找到一个函数能够计算出order阶矩阵中  row 行, col列上的数值大小, 想到递归
  12.         public int getValue(int row, int col, int order) {
  13.                 //基准条件
  14.                 if(1==order)      //最简单的一阶
  15.                         return order;
  16.                 if(0==order)      //偶数阶的最简单形式
  17.                         return order;
  18.                
  19.                 // 高阶矩阵而元素又位于矩阵的最外层, 能够通过简单的计算得出.
  20.                 //由于涉及多个 return语句, 只用if即可 .
  21.                 if(0==row)
  22.                         return col+1;
  23.                 if (col==order-1)
  24.                         return col+row+1;
  25.                 if(row==order-1)
  26.                         return 3*order-2-col;
  27.                 if(0==col)
  28.                         return 4*order-3-row;
  29.                 //所有简单的情况排除后,进行脱阶运算.
  30.                 return (order*4-4)+getValue(row-1, col-1, order-2);
  31.         }
  32.         public void  printClockWise(int order) {
  33.                 int value;
  34.                 int sum=order*order+1;
  35.                 for(int i=0;i<order; i++) {
  36.                         for(int j=0;j<order; j++) {
  37.                                 value=getValue(i,j,order);
  38.                                 value=sum-value;
  39.                                 System.out.print(value+"\t");
  40.                         }
  41.                         System.out.println("\n\n");
  42.                 }
  43.         }
  44. }
复制代码

8 个回复

倒序浏览





回复 使用道具 举报
好难,,,
回复 使用道具 举报
用了个递归, 把最外层细化一下,就这些
回复 使用道具 举报
楼主人才!   我用二维数组加循环做了一个,90行代码,给自己恶心死……
回复 使用道具 举报
意志不坚的会看吧下去!
回复 使用道具 举报
八宝 中级黑马 2015-12-10 22:11:14
7#
谢谢楼主
回复 使用道具 举报
星晴。 来自手机 中级黑马 2015-12-11 08:32:01
8#
顶顶顶,楼主加油!
回复 使用道具 举报
!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马