回型矩阵:
输入一个数字n,输出n阶回型矩阵
例如:输入5
输出
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
分析思路:
回型矩阵最外圈一次是连着的,所以我们可以从最外圈赋值
首先从上面开始赋值 1 2 3 4 5
然后从右边开始赋值 6 7 。。。。
紧接着是下面和左边
依次进行,一圈一圈知道完成结果。
#include<stdio.h> void Visit(int a[][100],int n) { int p=0,q=n-1; int count=0; while(count<n*n) { for(int i=p;i<=q;i++)//从上面开始赋值 a[p][i]=++count; for(int i=p+1;i<=q;i++)//从右边开始赋值 a[i][q]=++count; for(int i=q-1;i>=p;i--)//从下面开始赋值 a[q][i]=++count; for(int i=q-1;i>=p+1;i--) a[i][p]=++count; p++; q--; } } void Print(int a[][100],int n) { for(int i=0;i<n;i++) { for(int j=0;j<n;j++) printf("%2d ",a[i][j]); printf(" "); } } int main() { int n,a[100][100]; scanf("%d",&n); Visit(a,n); Print(a,n); return 0; }