对于一个 n 行 m 列的表格,我们可以使用螺旋的方式给表格依次填上正整数,我们称填好的表格为一个螺旋矩阵。
例如,一个 4 行 5 列的螺旋矩阵如下:
1 2 3 4 5
14 15 16 17 6
13 20 19 18 7
12 11 10 9 8
请问,一个 30 行 30 列的螺旋矩阵,第 20 行第 20 列的值是多少?
public class _4超大玉螺旋丸 {
public static void main(String[] args) {
int map [][]= new int[30][30];
int l,t,r,b;//left top right bottom
l=t=0;r=b=29;
int num=1;//输入的数子
while (num<=30*30) {
for (int i = l; i <= r; i++) {//从左向右输入
map[t][i]=num++;//第t行第i个(i是变量,在for中一直变直到最右边停止跳出)
}
t++;//top1行输入完成后 下次从第2行开始遍历
for (int i = t; i <= b; i++) {//从上到下输入
map[i][r]=num++;//第i行第r列(i是变量,在for中一直变直到最底部停止跳出)
}
r--;//最右边一列遍历完之后向左一列
for (int i = r; i >= l; i--) {//同理
map[b][i]=num++;
}
b--;
for (int i = b; i >= t; i--) {//同理
map[i][l]=num++;
}
l++;
}
System.out.println(map[19][19]);//输出第20行20列
}
}
图片来源:【蓝桥杯】模拟赛详解,冲刺国赛_小羊不会飞的博客-CSDN博客