输入一个矩阵的行列数量,生成一个螺旋矩阵,比如输入5,则打印:
1 2 3 4 5
12 13 14 15 6
11 10 9 8 7
输入3,则打印:
1 2 3
8 9 4
7 6 5
下面就是他的算法
package com.huawei2;
import java.util.Scanner;
public class Test {
private static int length;
private Test(){
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个正整数:");
length=sc.nextInt();
array =new int[length][length];
System.out.println(length);
value=1;
}
private static int value=0;
private static int[][] array=null;
private static Direction lastDirection=Direction.Right;
static enum Direction{
Right,Down,Left,Up;
}
public static void initArray(){
int row = 0,line=0;
for(int i=0;i<length*length;i++)
{
array[row][line]=value;
lastDirection=lastDirection(row,line);
switch(lastDirection)
{
case Right:
{
line++;
break;
}
case Down:
{
row++;
break;
}
case Left:
{
line--;
break;
}
case Up:
{
row--;
break;
}
}
value+=1;
}
}
public static Direction lastDirection(int row,int line)
{
Direction direction=lastDirection;
switch(direction){
case Right:
{
if(line==length-1||array[row][line+1]!=0)
direction=direction.Down;
break;
}
case Down:
{
if(row==length-1||array[row+1][line]!=0)
{
direction=direction.Left;
}
break;
}
case Left:
{
if(line==0||array[row][line-1]!=0)
{
direction=direction.Up;
}
break;
}
case Up:
{
if(array[row-1][line]!=0)
{
direction=direction.Right;
}
break;
}
}
return direction;
}
public static void main(String[] args) {
Test test=new Test();
test.initArray();
// show
for(int i1 = 0; i1 < length; i1++)
{
for(int j1 = 0; j1 < length; j1++)
{
//打印数字前加空格,使整体对齐
if(10 > array[i1][j1])
System.out.print(" " + array[i1][j1] + " ");
else if(100 > array[i1][j1])
System.out.print(" " + array[i1][j1] + " ");
else
System.out.print(array[i1][j1] + " ");
//进行换行
if(length- 1 == j1)
System.out.println();
}
}
}
}
分享到:
相关推荐
1.题目: n阶螺旋矩阵问题 题目描述: 创建n阶螺旋矩阵并输出。 2、阿牛的EOF牛肉串 题目描述: 今年的ACM集训队有一个叫做EOF的队伍,由阿牛、XC以及COY组 成。在共同的集训生活中,大家建立了深厚的友谊,阿牛准备做...
C语言 经典题目螺旋矩阵 //N阶螺旋矩阵 #include #include int main() { int N,i,j,n,num=1; int a[10][10]={0}; printf(输入你要输出的几阶中断:); scanf(%d,&N); for(n=0;n<=N/2;n++) { for(j=n;j&...
求N阶回旋矩阵,在给定阶数的二维数组外构建搜索边界,使用试探法求解
至少使用三个手动选择的线来求解每个消失点。 该MATLAB代码提供了用于选择和绘制线条的界面,但是需要插入用于计算消失点的代码。 有关估计消失点的详细信息,请参见Derek Hoiem的书中的章节(第4节)。 您还应该...
求解二元一次不定方程,最大公约及最小公倍数,自然对数的底e的计算,正弦、余弦、正切值,求等差数列,矩阵的加法运算,矩阵的乘法运算,打印n阶螺旋方阵,求33矩阵对角元素之和,求车运行速度,卖西瓜,打渔晒网...
都是平时自己在QQ上和人闲聊时给别人做的,有些好的我就记了下来,...万年历打印、阶乘位数、大数相加、螺旋矩阵、主函数递归——打印菱形、星期几程序、STL按字母表排序、二分法求解方程、STL泛型、字符串加密等等。。
针对机构特点,基于螺旋理论分析机构自由度与约束,给出机构自由度矩阵与约束矩阵,得出该机构有2个转动自由度。依据构型建立机构坐标系,通过构造闭环矢量,建立驱动长度与动平台转动角度的数学模型并求得运动学逆解。...
问题描述: 以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 实现要求: ⑴ 实现一个以链表作存储结构的栈...
建立准确表征一系悬挂轴箱螺旋弹簧波动特性的力学模型,运用动刚度矩阵法求解,研究其对悬挂系统隔振性能影响。结合基于格林函数法的车辆-轨道耦合动力学模型,引入弹簧刚度频变特性,对比分析考虑一系螺旋弹簧频变刚度...
采用EDEM软件建立螺旋输送仿真模型,以输送速率、平均质量流率为定性评价指标,利用极差法分析螺旋输送机构螺距、转速、向下输送倾斜角度对两评价指标的影响规律及主次顺序,最后通过矩阵求解得到最佳输送组合及影响...
014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较...
为了解决大口径光学元件磁流变高精度加工问题,基于矩阵运算模型,提出了SBB(Subspace Barzilai and Borwein)最小非负二乘与自适应Tikhonov正则化相结合的驻留时间快速求解方法。同时,在一次收敛中采用双去除函数...
013 用二维数组实现矩阵转置 014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割...
014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较...
014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较...
014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较...
014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较...
014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较...
014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较...
014 求解二维数组的最大/最小元素 015 利用数组求前n个质数 016 编制万年历 017 对数组元素排序 018 任意进制数的转换 019 判断回文数 020 求数组前n元素之和 021 求解钢材切割的最佳订单 022 通过指针比较...