/*
问题描述
找出下面给出图形的规律,给出n,画一个n行的对应图形。
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
输入格式
输入包含一个数n。1<=n<=30
输出格式
输出与上图类似n行的图形。
样例输入
4
样例输出
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
*/
#include <iostream>
using namespace std;
int main(){
int n,i=0,j=0,count=1;
cin>>n;
int a[n][n];
for(int p=0;p<n;p++){ //为数组赋初值
for(int q=0;q<n;q++){
a[p][q]=0;
}
}
a[0][0]=1; //定义起始位置为1
while(count<n*n){ //蛇形取数结束判断
while(j+1<n&&a[i][j+1]==0){ //向右
a[i][++j]=++count;
}
while(i+1<n&&a[i+1][j]==0){ //向下
a[++i][j]=++count;
}
while(j-1>=0&&a[i][j-1]==0){ //向左
a[i][--j]=++count;
}
while(i-1>=0&&a[i-1][j]==0){ //向上
a[--i][j]=++count;
}
}
for(int p=0;p<n;p++){ //输出
for(int q=0;q<n;q++){
cout<<a[p][q]<<" ";
}
cout<<"\n";
}
return 0;
}
绘制图形
最新推荐文章于 2021-05-06 20:57:23 发布