`

螺旋数字

    博客分类:
  • java
阅读更多
来源于 http://hi.baidu.com/shijiebei_2009/item/3629962d7056e50043634a69

以该数字为矩阵的大小,把1,2,3…n*n 的数字按照顺时针螺旋的形式填入其中
import java.util.Scanner;
 
/**
 * 从键盘输入一个整数(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
 * 
 * @author wangxu
 * date:2012/3/24
 * 说明:时间有限,给一个不太优化的代码,足以实现功能
 * 思路:先声明一个二维数组用来存储每个对应的数字,对数组赋值完成之后就可以打印输出
 * 我的代码可以实现整型以内的所有合法数字,并不局限于20以内
 * 
 */
public class Demo {
static int arr[][];//二维数组用来存储数字
static int currentNumber = 1;// 从1开始打印,用来控制整个流程需要打印的数字
static int num = 0;//用来判断何时可以打印
public static void main(String args[]) throws Exception {
Scanner in = new Scanner(System.in);//获取输入流
System.out.println("请输入您希望打印的矩阵的最大的值:");//打印提示信息
String input = in.next();//获取用户的输入
int count = 0;//计数器
if (input.matches("\\d+")) {// 输入正确,用来检验用户输入的是否是数字
num = Integer.parseInt(input);
count = num;// count用来控制在每一个方向上打印几个数字,第一次打印时候和用户输入的数字相同
} else {
System.out.println("您输入的数据不正确,系统推出!");
System.exit(0);
}
arr = new int[num][num];//实例化数组
moveRight(count, 0, 0);//调用右移函数
}
 
public static void moveRight(int count, int rowIndex,
int columnIndex) {//count表示移动几步,由题目可以看出右移时候次数和是用户输入的数字,下移减1,左移不变,上移减1,右移不变
if(judge()){//如果数组已经赋值结束,就打印出来
print();
}else{
int temp = 0;//临时变量
while (temp < count) {
arr[rowIndex][columnIndex] = currentNumber;
temp ++;//临时变量自增
columnIndex++;//向右移动
currentNumber++;//当前要打印的数字自增
}
count--;//将打印次数减1
columnIndex--;//下标归位
rowIndex++;//下移一位
moveDown(count,rowIndex,columnIndex);
}
}
 
public static void moveDown(int count,int rowIndex,int columnIndex) {
if(judge()){
print();
}else{
int temp = 0;
while(temp < count){
arr[rowIndex][columnIndex] = currentNumber;
temp ++;
rowIndex++;
currentNumber++;
}
rowIndex--;
columnIndex--;//左移一位
moveLeft(count, rowIndex, columnIndex);
}
 
}
 
public static void moveLeft(int count,int rowIndex,int columnIndex) {
if(judge()){
print();
}else{
int temp = 0;//临时变量
while(temp < count){
arr[rowIndex][columnIndex]=currentNumber;
temp ++;
columnIndex--;//左移一位
currentNumber++;//数字自增
}
count--;//次数减1
columnIndex++;
rowIndex--;//上移一位
moveUp(count, rowIndex, columnIndex);
 
}
}
 
public static void moveUp(int count,int rowIndex,int columnIndex) {
if(judge()){
print();
}else{
 
int temp = 0;
while(temp < count){
arr[rowIndex][columnIndex] = currentNumber;
temp ++;
rowIndex--;
currentNumber++;
}
rowIndex++;
columnIndex++;//右移一位
moveRight(count, rowIndex, columnIndex);
}
 
}
public static void print(){//在控制台打印
for(int row[]:arr){
for(int column:row){
System.out.print(column+"\t");
}
System.out.println();//换行打印
}
}
public static boolean judge(){
if(currentNumber>Math.pow(num, 2)){//如果数组已经赋值结束,就打印出来
return true;
}else{
return false;
}
}
}

分享到:
评论

相关推荐

    C++ 输出螺旋数字矩阵

    在编程领域,尤其是在C++语言中,生成螺旋数字矩阵是一种常见的算法问题。螺旋矩阵,也称为螺旋阵列,是将一个二维数组按照螺旋路径填充数字的一种方式。这种矩阵的填充规则是从左上角开始,向右填充一行,然后向下...

    螺旋数字(回文数)

    关于一个螺旋数字的java例子有注释,有控制台输入,希望对你有用

    指南者稳盈一号指标期货傻瓜式买卖指标螺旋数字公式源码.doc

    指南者稳盈一号指标期货傻瓜式买卖指标螺旋数字公式源码 本文档提供了一个基于 technical analysis 的交易指标,名为指南者稳盈一号指标期货傻瓜式买卖指标螺旋数字公式源码。该指标旨在帮助交易者更好地分析市场...

    通达信菲波纳契螺旋数字主图指标.doc

    通达信菲波纳契螺旋数字主图指标.doc

    (C卷,100分)- 螺旋数字矩阵(Java & JS & Python & C).html

    (C卷,100分)- 螺旋数字矩阵(Java & JS & Python & C).html

    华为OD机试 - 螺旋数字矩阵(Java & JS & Python & C & C++).html

    华为OD机试 - 螺旋数字矩阵(Java & JS & Python & C & C++).html付费专栏内容,免费下载,多种语言解法

    【免费题库】华为OD机试 - 螺旋数字矩阵(Java & JS & Python & C & C++).html

    【免费题库】华为OD机试 - 螺旋数字矩阵(Java & JS & Python & C & C++).html

    java实现螺旋数据

    标题“Java实现螺旋数据”指的是在Java编程中创建一种特殊的数据结构,该结构按照螺旋顺序填充数字。描述进一步解释了具体实现方式:用户通过键盘输入一个介于1到20之间的整数,这个数字将决定矩阵的大小。然后,...

    (C卷,100分)- 螺旋数字矩阵(Java & JS & Python & C).png

    华为OD正版题库,CD卷,2024原题库。超低价可下载包含多种代码和解析,不用购买高价的专栏,任何问题可私信

    华为OD机试C卷- 螺旋数字矩阵(Java & JS & Python & C).md- 免费看解析和代码

    私信博主获取三天体验卡,免费看所有华为OD真题、考试报告、手撕代码、面试记录

    螺旋矩阵的实现

    C++实现螺旋矩阵,螺旋数字排列,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环

    任意数字螺旋矩阵打印

    在给定的场景中,我们需要实现一个程序,能够根据用户输入的数字n生成一个n×n的螺旋矩阵,并打印出来。例如,当输入为3时,输出的矩阵是: ``` 1 8 7 2 9 6 3 4 5 ``` 在这个螺旋矩阵中,数字从1开始,按照顺时针...

    基于数字螺旋成像方法的衍射理论

    数字螺旋成像方法是近年来发展起来的一种新颖的成像技术,它与传统成像方法不同,能够捕捉到光波携带的轨道角动量信息,即在光束中编码的相位结构信息。该技术利用了数字螺旋成像(DSI)的概念,通过分析携带轨道...

    利用UG_GRIP构建螺旋桨三维数字模型.pdf

    螺旋桨三维数字模型的构建是现代制造工程中的一个重要环节,尤其在涉及到化学反应过程、食品加工、医药生产和发酵等领域。在这些行业中,搅拌操作作为加快物质混合速度、提高混合均匀性的关键技术,其核心部件之一...

    螺旋方阵 的解答

    在这个例子中,我们可以看到数字1在左上角,然后按照顺时针方向填充,直到填满整个矩阵。 构建螺旋方阵的方法有很多种,一种常见的做法是使用四个指针分别表示四个边缘(上、右、下、左),在每次填充一个元素后,...

    SolidWorks 中画螺旋桨

    随着数控技术的发展,现代螺旋桨大多采用数字控制技术进行加工,之后通过人工打磨达到更高的精度。 #### 六、结论 通过利用SolidWorks软件的三维建模功能,可以高效地构建螺旋桨的CAD数字化模型。通过对叶片曲率的...

    螺旋矩阵matlab源程序

    螺旋矩阵是一种特殊的矩阵排列方式,它将数字按照顺时针或逆时针方向从左上角开始,沿着螺旋路径填充矩阵。在给定的MATLAB源程序中,我们看到两个程序,分别实现了顺时针和逆时针的螺旋矩阵。 1. 顺时针螺旋矩阵: ...

    螺旋方阵1111111.txt

    ### 螺旋方阵知识点解析 #### 一、螺旋方阵定义与概念 螺旋方阵是一种特殊的矩阵结构,其元素按照从外向内、顺时针或逆时针方向呈螺旋状排列。这种排列方式使得矩阵中的数字呈现出一种规律性的美感。 #### 二、...

    采用cst仿真的螺旋线天线

    2. **工作频率**:在本案例中,天线工作在1.4GHz,这是一个常见的微波频率,适用于多种无线通信标准,如GPS和数字音频广播。设计时需确保天线在该频率下有良好的辐射性能。 3. **仿真步骤**:使用CST进行仿真,首先...

    C语言解决螺旋数组问题

    螺旋数组问题,相信很多人都做过了,初学者可以看一下,应该会有用处的。

Global site tag (gtag.js) - Google Analytics