`
Su_Huirong
  • 浏览: 1354 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Java打印回型数组

阅读更多

见到很多人纠结这个问题,我闲着没事就打着玩玩,把如下代码放上来来让大家欣赏欣赏,希望每个人看完都会非常的快乐!

/** 
 * @class 打印回型数组Su_Huirong版 
 * @author Su_Huirong 
 * @time 5小时 
 * @version Su_Huirong 5小时版 历经各种磨难 各种考验 调试时间3h  
 */  
import java.util.Scanner;  
public class Test {  
    /** 
     * @row 列 
     * @length 行 
     * @sum 数组元素数量 
     * @math 二维数组:第一个维度为列,第二个维度为行 
     */  
    int row,length;  
    int num;  
    int[][] math;  
    /** 
     * 数组初始化: 
     * 根据元素数量sum判断行和列,给二维数组分配空间 
     */  
    public void initial(){  
        /** 
         * @temp 保存乘积等于sum的两个因数的差,取差小的两个因数,比如sum为24,因数有1、2、3、4、6、8、12。  我们取因数4、6而不是取因数1、12 
         */  
        int temp=num+1;  
        length=(num+1)/2;  
        for(int i=temp;i>0;i--){  
            for(int j=1;j<=i;j++){  
                if(i*j==num&&i-j<temp){  
                    row=j;  
                    length=i;  
                    temp=i*j;  
                }  
            }  
        }  
        /** 
         * @followRow 此变量用于追踪一轮赋值结束后下一次赋值的位置(列) 
         * @followLength 此变量用于追踪一轮赋值结束后下一次赋值的位置(行) 
         * @flagRow 标记赋值范围(列的范围) 
         * @flagLength 标记赋值范围(行的范围) 
         */  
        math=new int[row][length];  
        int followRow=0,followLength=0;  
        int flagRow=0,flagLength=1;  
        /** 
         * @row 用来表示当前行 
         * @length 用来表示当前列 
         */  
        row=0;  
        length=0;  
        /** 
         * 核心函数(3h调试的就是他) 
         * 4个if选择结构判断坐标与追踪坐标的位置判断方向上、下、左、右从而判断如何赋值 
         */  
        for(int i=1;i<=num;){  
            /**向右*/  
            if(row==flagRow&&length<flagLength){  
                followLength=math[0].length-1;  
                while(math[row][followLength]!=0&&followLength>0){  
                    followLength--;  
                }  
                while(length<followLength){  
                    math[row][length++]=i++;  
                }  
                flagRow=row+1;  
                flagLength=length;  
            }  
            /**向下*/  
            if(row<flagRow&&length==flagLength){  
                followRow=math.length-1;  
                while(math[followRow][length]!=0&&followRow>0){  
                    followRow--;  
                }  
                while(row<followRow){  
                    math[row++][length]=i++;  
                }  
                flagRow=row;  
                flagLength=length-1;  
            }  
            /**向左*/  
            if(row==flagRow&&length>flagLength){  
                followLength=0;  
                while(math[row][followLength]!=0&&followLength<math[0].length-1){  
                    followLength++;  
                }  
                while(length>followLength){  
                    math[row][length--]=i++;  
                }  
                flagRow=row-1;  
                flagLength=length;  
            }  
            /**向上*/  
            if(row>flagRow&&length==flagLength){  
                followRow=0;  
                while(math[followRow][length]!=0){  
                    followRow++;  
                }  
                do{  
                    math[row--][length]=i++;  
                }while(row>followRow);  
                flagRow=row;  
                flagLength=length+1;  
            }  
              
        }  
    }  
    /** 
     * @show() 循环打印二维数组 
     * 
     */  
    public void show(){  
        for(int i=0;i<math.length;i++){  
            for(int j=0;j<math[i].length;j++){  
                System.out.print(math[i][j]+"\t");  
            }  
            System.out.println();  
        }  
    }  
    /** 
     * @main() 主方法 
     */  
    public static void main(String[] args){  
        Scanner input=new Scanner(System.in);  
        Test t=new Test();  
        System.out.print("请输入环形数组元素数量:");  
        t.num=input.nextInt();  
        t.initial();  
        t.show();  
    }  
}

 

分享到:
评论

相关推荐

    JAVA 回型结构

    根据给定的文件标题“JAVA 回型结构”、描述“将黑方块与白方块排列成回型螺旋结构,大小可随意设定,小程序一个,字数要长”、标签“JAVA 回旋结构 数组”以及部分代码内容,我们可以深入探讨这个Java程序所涉及的...

    回型矩阵填充代码

    回型矩阵,也被称为环形矩阵,是一种特殊的二维数组,其特点是元素的填充方式呈现出从中心向外环绕填充的模式。这种矩阵通常在编程问题中出现,例如数据存储、图像处理或者游戏开发等领域。理解并实现回型矩阵填充...

    回型数 C++

    `print`函数负责将填充后的`flag`数组打印出来,展示回型数的排列结果。它遍历整个`flag`数组,按行输出每个元素。 #### 代码分析: 给定的代码示例中,使用了C++的`iostream`库进行输入输出操作,通过`using ...

    C++回型矩阵

    用C++编写的回型矩阵,任意输入一个数字,然后以回型矩阵的形式显示出来

    C语言回型矩阵

    用C语言实现输入任意一个数字,然后以回型矩阵的形式显示出来,其中用数字填充回型矩阵,没有采用递归算法,而是简单判断条件然后循环至结束

    Java趣味编程100例 清华大学出版社.zip

    本书讲解了100个各种类型的Java编程趣味题的求解过程,旨在帮助读者培养编程兴趣,拓宽Java编程思维,提高Java编程能力,掌握用程序设计解决实际问题的方法与技巧。本书取材注重趣味性与实用性,内容涵盖了Java编程...

    拆解世界五百强面试题--回型矩阵

    请用C语言实现 输入N,打印N*N矩阵 比如 N = 3, 打印: 1 2 3 8 9 4 7 6 5 N = 4, 打印 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7

    leetcode回型打印矩阵-100DaysOfCode:2018年10月8日开始的100天编码挑战

    leetcode回型打印矩阵100天代码 2018 年 10 月 8 日,我开始了100 Days Of Code挑战。 在这个挑战过程中,我保证编码 100 天。 这些问题将从 HackerRank 和 LeetCode 中选出。 如果所有测试用例都成功,代码将被推送...

    c语言代码方阵

    好详细的资源描述有机会获得我们的推荐,更有利于他人下载,赚取更多积分。

    练习_Holcon回型针练习_

    本案例中,我们关注的焦点是名为"练习_Holcon回型针练习_"的压缩包,它包含了与Holcon回型针练习相关的学习资料。Holcon通常指的是霍尔康(Halcon)——一种广泛使用的机器视觉软件。在这里,用户可能是为了掌握霍尔...

    三进两回型工作面错层位布置及数值模拟

    以某矿3#煤层三进两回型工作面地质条件为背景,应用错层位巷道布置采煤法对其回采巷道进行优化布置,通过对比新方法与原方法的煤炭损失率、排瓦斯容易程度、巷道掘进与维护等方面,初步得出错层位巷道布置形式在三进两...

    rhino grasshoper 透视回型 造型.gh

    【18 透视回型 造型】https://www.bilibili.com/video/BV13j4aeiEAf?vd_source=b420114c993138474d2e93d83ead77a5

    行业文档-设计装置-风机叶片回型检修平台智能伸缩臂装置.zip

    标题中的“行业文档-设计装置-风机叶片回型检修平台智能伸缩臂装置”表明了这是一个关于风力发电行业的技术文档,重点介绍了用于风机叶片检修的创新设备——回型检修平台与智能伸缩臂装置。这类设备是风电运维中不可...

    Return-type-matrix.rar_return_生成矩阵labview

    在LabVIEW中生成回型矩阵,可以利用数组函数和循环结构来实现。首先,你需要创建一个二维数组,然后通过循环将数据以环形的方式填充进去。这通常涉及使用两个嵌套的For循环,一个控制行,另一个控制列,通过巧妙地...

    基于回型边框的二次规划布局算法

    在探讨集成电路设计中的一项关键技术——布局算法时,我们需要注意几个核心概念:布局问题、力驱动、二次线长以及回型边框模型。 首先,布局问题在集成电路设计流程中,指的是确定电路模块位置的过程。布局算法的...

    行业文档-设计装置-风机叶片回型检修平台智能平衡吊点装置.zip

    "风机叶片回型检修平台智能平衡吊点装置"是一种专门针对这一需求而设计的创新设备,它旨在提高检修效率,确保作业安全,同时降低运营成本。下面将详细介绍这个装置的相关知识点。 首先,我们来理解"回型检修平台"的...

    44 回型钢楼梯加工及安装深化图_施工图CAD图纸ID_1131748966.zip

    44 回型钢楼梯加工及安装深化图_施工图CAD图纸ID_1131748966.zip

    易语言回弯进度条

    易语言是一种专为中国人设计的编程语言,它以简体中文作为编程语法,降低了编程的门槛,使得更多非计算机专业的人也能快速上手编程。在易语言中,“回弯进度条”是一种常见的用户界面(UI)元素,它用于展示程序执行...

    蓝桥杯-C语言图形输出

    本资源摘要信息涵盖了 C 语言图形输出的多方面知识点,包括矩形、平行四边形、等腰三角形、等腰梯形、空心梯形、空心正六边形、sin(x) 函数图形、cos(x) 函数图形、螺旋方阵、数字金字塔、回型方阵、乘法九九表等...

Global site tag (gtag.js) - Google Analytics