首先看看题目要求:
题目描述
小明上编程课拿着手机玩儿贪吃蛇,然后手机被老师没收了。(真活该)
老师说如果他能编写出生成蛇形矩阵的代码来就还给他手机。
所谓的蛇形矩阵是指将1-->n*n的数字从矩阵左上角开始,顺时针绕圈填入 n 行 n 列的矩阵中。
小明当然不会啦,就来求助你了。
输入
输入一行一个数n
输出
输出蛇形矩阵
输入数据1
3
输出数据1
1 2 3
8 9 4
7 6 5
输入数据2
4
输出数据2
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
提示
- 1 <= n <= 100
这道题还算比较难但还是很简单
话不多说,上KODE!(C++)
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
int x=1,y=0;
int num = 1;
int a[105][105] = {0};
while (num<=n*n){
while (y+1<=n && a[x][y+1]==0) {
y++;
a[x][y] = num;
num++;
}
while (x+1<=n && a[x+1][y]==0) {
x++;
a[x][y] = num;
num++;
}
while (y-1>=1 && a[x][y-1]==0) {
y--;
a[x][y] = num;
num++;
}
while (x-1>=1 && a[x-1][y]==0) {
x--;
a[x][y] = num;
num++;
}
}
for (int i=1;i<=n;i++){
for (int j=1;j<=n;j++)
cout << a[i][j] << " ";
cout << endl;
}
return 0;
}
解决!