从键盘输入一个整数(1~20)
则以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中。例如:
输入数字2,则程序输出:
1 2
4 3
输入数字3,则程序输出:
1 2 3
8 9 4
7 6 5
输入数字4, 则程序输出:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
我的思路:
1.先思考,找规律。
2.输出的结果是矩阵图,并且顺时针输出有规律数字,
就把矩阵分为由多个圈组成,并且每一个圈分为上,右,下,左边。
3.每一个圈的输出就是一次循环,第一次循环得到一个最大的圈,
之后循环条件到的圈内嵌在大圈里。
4.给它循环一定的次数,最终就得到所
要的矩阵。
5.分为四边,就是更好的把数字控制,并且把数字放入到矩阵中
附上我的代码。如有改进地方,望能提出,多谢。
/**
* @category 顺时针螺旋打印数字
* @author liucanwen
* @2012年1月22日21:26:18
*/
public class T8
{
public static void main(String[] args)
{
System.out.print("请输入一个整数(1~20): ");
Scanner scanner = new Scanner(System.in);
int inputNum = scanner.nextInt();
int[][] arr = T8.getData(inputNum);
for(int i = 0; i < inputNum; i++)
{
for(int j = 0; j < inputNum; j++)
{
//打印数字前加空格,使整体对齐
if(10 > arr[i][j])
System.out.print(" " + arr[i][j] + " ");
else if(100 > arr[i][j])
System.out.print(" " + arr[i][j] + " ");
else
System.out.print(arr[i][j] + " ");
//进行换行
if(inputNum - 1 == j)
System.out.println();
}
}
}
public static int[][] getData(int number)
{
//创建一个20*20的二维数组,用于放置数据,并返回
int[][] arrs = new int[20][20];
//数组中每一位用num表示,先初始化为1
int num = 1;
int i = 0;//表示数组中第一个数值
int j = 0;//表示数组中第二个数值
//每次循环四边组成一个圈,多次循环之后内嵌圈
for(int k = 0; k <= number/2; k++)
{
//赋值上边(控制好结束条件)
for(j = k, i = k; j < number - k; j++)
{
arrs[i][j] = num;
num++;
}
//赋值右边 (控制好结束条件)
for(j=j-1, i=i+1; i < number - k; i++)
{
arrs[i][j] = num;
num++;
}
//赋值下边(控制好结束条件)
for(j=j-1, i=i-1; j > k - 1; j--)
{
arrs[i][j] = num;
num++;
}
//赋值左边(控制好结束条件)
for(j=j+1, i=i-1; i > k; i--)
{
arrs[i][j] = num;
num++;
}
}
return arrs;
}
}
分享到:
相关推荐
在这个螺旋矩阵中,数字从1开始,按照顺时针方向螺旋形地填充。每行和每列的数字都是递增的,直到整个矩阵填满。 在C++中实现这个功能,我们需要用到二维数组来存储矩阵,同时还需要两个变量来跟踪当前行和列的边界...
java基础面试题顺时针打印矩阵本资源系百度网盘分享地址
标题“Java实现螺旋数据”指的是在Java编程中创建一种特殊的数据结构,该结构按照螺旋顺序填充数字。描述进一步解释了具体实现方式:用户通过键盘输入一个介于1到20之间的整数,这个数字将决定矩阵的大小。然后,...
Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...
java编程题之顺时针打印矩阵的主要问题是,给定一个矩阵,如何按照从外向里以顺时针的顺序依次打印出每一个数字。 二、解题思路 要解决这个问题,需要使用一个循环来控制打印的方向和顺序。可以使用一个ArrayList...
Java 顺时针打印矩阵是一种常见的算法问题,要求从外向里以顺时针的顺序依次打印出每一个数字。例如,输入一个矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字 1、2、3、4、8、12、16、15、14、...
在该例子中,数字从左上角开始,顺时针螺旋填充整个方阵。 #### Java实现螺旋方阵的步骤 实现螺旋方阵的关键在于理解如何按照螺旋顺序填充数组。以下为具体步骤: 1. **初始化**:创建一个N x N的二维数组。 2. *...
在编程领域,螺旋矩阵是一种特殊的二维数组,它的元素按照顺时针或逆时针方向螺旋式地填充。在Java中实现n阶螺旋方阵是一项常见的编程任务,这有助于理解和掌握数组的操作以及循环控制结构的使用。下面我们将深入...
螺旋上三角是一种特殊的矩阵打印方式,它以螺旋形的方式从左上角开始,顺时针方向打印矩阵中的数字。在C语言中实现这样的功能,主要涉及到数组操作、循环控制以及条件判断。以下是对这一主题的详细讲解。 1. **数组...
在C语言中,顺时针打印二维数组是一个常见的编程问题,它涉及到对数组的理解、指针的操作以及循环结构的应用。本问题旨在通过编程实现从数组的左上角开始,沿着顺时针方向逐个访问并打印数组元素。下面将详细阐述...
螺旋矩阵,又称螺旋顺序,是一种在二维数组中按照螺旋路径填充元素的数据结构。在Java编程中,实现螺旋矩阵是一项常见的算法挑战,它涉及到数组操作、循环控制和逻辑判断。下面我们将详细探讨螺旋矩阵的原理、Java...
### CSP模拟试卷知识点详解 #### 一、系统软件概念及分类 **知识点1:系统软件定义** - **定义**:系统软件是指支持应用软件运行的一系列基础软件集合,包括操作系统和其他辅助工具,如编译器、数据库管理系统等。 ...
通过以上分析,我们可以看出生成螺旋矩阵不仅涉及到对循环结构的应用,还需要理解二维数组的操作方法以及如何通过控制变量来模拟复杂的方向变化。这种类型的编程问题有助于提高编程者的逻辑思维能力和算法设计能力。...
python python_剑指offer第19题顺时针打印矩阵
本文将详细介绍如何用Java实现顺时针打印矩阵的算法,并探讨其背后的逻辑与实现方式。 首先,我们需要理解何为顺时针打印矩阵。简单来说,就是从矩阵的左上角开始,按照顺时针的方向(上-右-下-左)逐层遍历矩阵中...
在本实验中,任务是创建一个Java程序,用于输出顺时针旋转的数字方阵。这个方阵的特性是从中心开始,数字按照顺时针方向填充。给定的代码片段是用C++编写的,但我们可以将其转换为Java语言,并解释其工作原理。 ...
这里我们关注两个剑指Offer的面试题目,分别是“顺时针打印矩阵”和“栈的压入、弹出序列”。 1. **顺时针打印矩阵** - **题目描述**:给定一个矩阵,按照顺时针方向打印矩阵中的元素。例如,对于矩阵`[[1, 2, 3],...
7. 顺时针螺旋填充矩阵:这个程序设计题要求将1到n*n的数字按顺时针螺旋顺序填入n*n的矩阵中。可以通过四个方向的循环来实现,每次填充一行或一列后,根据剩余数字和矩阵大小调整填充方向。 8. 日期差值计算:此题...
"输出顺时针螺旋数组"是一个常见的算法问题,它涉及到数组操作和逻辑思维。这个问题的主要目标是将一个二维数组按照顺时针方向输出,即从左上角开始,沿着外层边界螺旋式地遍历整个数组。寻路算法在这里扮演着关键...