本文主要是介绍蓝桥杯 顺时针螺旋填入,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
从键盘输入一个整数(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
/** 顺时针螺旋式填入,* 即从左往右,从上往下,从右往左,从下往上* 假设矩阵的长度为n,循环的次数应为n/2*/
import java.util.*;public class Main{public static void print(int[][] array){for(int i=0;i<array.length;i++){for(int j=0;j<array.length;j++){System.out.printf("%4d", array[i][j]);}System.out.println();}}public static void main(String[] args){Scanner s=new Scanner(System.in);int n=s.nextInt();int[][] array=new int[n][n];int startIndex=0,endIndex=n,e=0,count=1;while(e<=n/2){for(int i=startIndex;i<endIndex;i++){//给该轮的上层赋值,行数由变量e决定,依次为第0,1,2,...,n/2行array[e][i]=count++;}for(int i=startIndex+1;i<endIndex;i++){//给该轮的右侧赋值,列数由n-1-e决定,依次为第n-1,n-2,n/2列//同时,注意不要覆盖已经赋值的位置array[i][n-1-e]=count++;}for(int i=endIndex-2;i>=startIndex;i--){//给该轮的下侧赋值,行数由n-1-e决定,依次为第n-1,n-2,n/2行array[n-1-e][i]=count++;}for(int i=endIndex-2;i>=startIndex+1;i--){//给该轮的左侧赋值,列数由e决定,依次为第0,1,2,n/2列array[i][e]=count++;}//由于一轮赋值后围一圈,所以,startIndex和endIndex都需要变化startIndex++;endIndex--;//起始的行数e也需要发生变化e++;}print(array);}
}
这篇关于蓝桥杯 顺时针螺旋填入的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!