- 螺旋矩阵:螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环。如下:
下面的代码可以作为参考,大家自己写的可以输入: 1,1; 1,2; 3,5; 5,3 ;5,5进行验证一下,还是有一些小细节需要注意的
- 源代码(借助label)
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("请输入螺旋矩阵的行数:");
int m = scan.nextInt();
System.out.print("请输入螺旋矩阵的列数");
int n = scan.nextInt();
int[][] arr = new int[m][n];
int k = 1,
row, //行
column; //列
label:for (int i = 0; k <= m * n; i++){
for (column = i; column < n - i; column++){
arr[i][column] = k++;
if(k>m*n)break label;
}
for (row = i + 1; row < m - i - 1; row++){
arr[row][n-1-i]=k++;
if(k>m*n)break label;
}
for (column = n - i - 1; column > i; column--)
{
arr[m-i-1][column] = k++;
if(k>m*n)break label;
}
for (row = m - i - 1; row > i; row--)
{
arr[row][i] = k++;
if(k>m*n)break label;
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}
- 源代码(不借助label)
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("请输入螺旋矩阵的行数:");
int m = scan.nextInt();
System.out.print("请输入螺旋矩阵的列数");
int n = scan.nextInt();
int[][] arr = new int[m][n];
int k = 1,
row, //行
column; //列
for (int i = 0; k <= m * n; i++){
for (column = i; column < n - i; column++){
arr[i][column] = k++;
}
for (row = i + 1; row < m - i - 1; row++){
arr[row][n-1-i]=k++;
}
for (column = n - i - 1; column > i && i != (m -i - 1); column--)
{
arr[m-i-1][column] = k++;
}
for (row = m - i - 1; row > i && i != (n -i - 1); row--)
{
arr[row][i] = k++;
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}