学习C++从娃娃抓起!记录下洛谷C++学习和备考过程中的题目,记录每一个瞬间。
附上汇总贴:洛谷刷题C++语言 | 汇总_热爱编程的通信人的博客-CSDN博客
【题目描述】
给出一个不大于 9 的正整数 n,输出 n×n 的蛇形方阵。
从左上角填上 1 开始,顺时针方向依次填入数字,如同样例所示。注意每个数字有都会占用 3 个字符,前面使用空格补齐。
【输入】
输入一个正整数 n,含义如题所述。
【输出】
输出符合题目要求的蛇形矩阵。
【输入样例】
4
【输出样例】
1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7
【代码详解】
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, a[15][15]={0}, x=1, y=1, mark=1;
cin >> n;
a[x][y] = mark;
while (mark<n*n) {
//一直往右走
while (a[x][y+1]==0 && y+1<=n) {
y++; mark++;
a[x][y] = mark;
}
//一直往下走
while (a[x+1][y]==0 && x+1<=n) {
x++; mark++;
a[x][y] = mark;
}
//一直往左走
while (a[x][y-1]==0 && y-1>=1) {
y--; mark++;
a[x][y] = mark;
}
//一直往上走
while (a[x-1][y]==0 && x-1>=1) {
x--; mark++;
a[x][y] = mark;
}
}
//输出矩阵
for (int i=1; i<=n; i++) {
for (int j=1; j<=n; j++) {
cout << setw(3) << a[i][j];
}
cout << endl;
}
return 0;
}
【运行结果】
4
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7