如何用JAVA实现螺旋矩阵

如何用JAVA实现螺旋矩阵,第1张

import java.io.*public class RingDemo {

public static void main(String[] args) {

String strIn = ""

System.out.print("请输入矩阵行列数:")

InputStreamReader input = new InputStreamReader(System.in)

BufferedReader buff = new BufferedReader(input)

try {

strIn = buff.readLine()

} catch (IOException e) {

System.out.println(e.toString())

}

int int1 = Integer.parseInt(strIn)

int n = int1

System.out.println("这是行列数为" + n + "的螺线型数组:")

int intA = 1//芹稿 初始化

int[][] array = new int[n][n]

int intB

if (n % 2 != 0) {

intB = n / 2 + 1// 奇数时i循环次数

} else

intB = n / 2// 偶数时i循环次数

for (int i = 0i <intBi++) { // 从外到里循环

// 从左到右横的开始

for (int j = ij <n - ij++) {

array[i][j] = intA

intA++

}

// 从上到键皮下稿首差纵

for (int k = i + 1k <n - ik++) {

array[k][n - i - 1] = intA

intA++

}

// 从右到左横

for (int l = n - i - 2l >= il--) {

array[n - i - 1][l] = intA

intA++

}

// 从下到上纵

for (int m = n - i - 2m >im--) {

array[m][i] = intA

intA++

}

}

// 输出数组

for (int i = 0i <ni++) {

for (int j = 0j <nj++) {

System.out.print(array[i][j] + " ")

}

System.out.println()

} }

}

程序代码:public class Juzhen

{

public static void main(String args[]) throws Exception

{

int i,jint n=3

int a[][] = new int[n][n]for(i=0i<ni++)

{

for(j=0j<nj++)

a[i][j]=0

}

a[0][0]=1

for(i=0i<(n+1)/2i++)

{

for(j=0j<n-1-ij++)

if(a[j+1][i]==0)a[j+1][i]=a[j][i]+1for(j=i+1j<n-ij++)

if(a[n-1-i][j]==0)a[n-1-i][j]=a[n-1-i][j-1]+1for(j=n-1-ij>ij--)

if(a[j-1][n-1-i]==0)a[j-1][n-1-i]=a[j][n-1-i]+1for(j=n-1-ij>ij--)

if(a[i][j-1]==0)a[i][j-1]=a[i][j]+1

}

for(i=0i<ni++)

{

for(j=0j<nj++)

{

if(a[i][j]<10)System.out.print(" 0"+a[i][j])

else System.out.print(" "+a[i][j])

}

System.out.println()

}

}

}执行结果:

height就相当于n

width就相当于m

public class SpiralMatrixMaker {

public static void main(String[] args) {

int max = 20

int i = 0, j = 0

int height = 3

int width = 4

int[][] a = new int[max][max]

int m = 1, s = 1

int x1 = 0

int y1 = 0

int x2 = height

int y2 = width

while (true) {

if (s == 1) {

for (j <y2j++) {

a[i][j] = m++

}

j--

i++

y2--

for (i <x2i++) {

a[i][j] = m++

}

i--

j--

x2--

s = -1

} else {

for (j >= y1j--) {

a[i][j] = m++

}

j++

i--

y1++

for (i >= x1 + 1i--) {

a[i][j] = m++

}

i++

j++

x1++

s = 1

}

if (m >height * width) {

break

}

}

for (i = 0i <heighti++) {

for (j = 0j <widthj++) {

System.out.print(a[i][j])

System.out.print("\t")

}

System.out.println()

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/12391225.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存