NC22230. 回型矩阵
描述
输入描述
输入一行,包含一个整数n
1<=n<=19
输出描述
输出n行,每行包含n个正整数.
示例1
输入:
4
输出:
1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7
C 解法, 执行用时: 2ms, 内存消耗: 356K, 提交时间: 2023-05-27 13:31:06
#include <stdio.h> int a[20][20]; int main() {int n; scanf("%d",&n); a[0][0]=1; int i=0,j=0,s=1; while(s<n*n) {while(j+1<n&&!a[i][j+1]) a[i][++j]=++s; while(i+1<n&&!a[i+1][j]) a[++i][j]=++s; while(j-1>=0&&!a[i][j-1]) a[i][--j]=++s; while(i-1>=0&&!a[i-1][j]) a[--i][j]=++s;} for(i=0;i<n;i++) {for(j=0;j<n;j++) printf("%d ",a[i][j]); printf("\n");}}
C++ 解法, 执行用时: 3ms, 内存消耗: 408K, 提交时间: 2021-09-13 13:30:46
#include <iostream> using namespace std; int main(){ int i,j,k=0,n,c=1,a[20][20]; cin>>n; while(c<=n*n){ for(i=k;i<n-k;i++)a[k][i]=c++; for(j=k+1;j<n-k;j++)a[j][i-1]=c++; for(i=j-1;i>k;i--)a[j-1][i-1]=c++; for(i=j-1;i>k+1;i--)a[i-1][k]=c++; k++; } for(i=0;i<n;i++){ for(j=0;j<n;j++){ cout<<a[i][j]<<' '; } cout<<endl; } return 0; }
C(gcc 7.5.0) 解法, 执行用时: 2ms, 内存消耗: 392K, 提交时间: 2023-01-04 21:18:18
#include<stdio.h> int main() {int n,a[200][200],i,c,b,sum=0,d,e; scanf("%d",&n); c=0; b=n-1; while(sum<n*n) {for(i=c;i<=b;i++) a[c][i]=++sum; for(i=c+1;i<=b;i++) a[i][b]=++sum; for(i=b-1;i>=c;i--) a[b][i]=++sum; for(i=b-1;i>=c+1;i--) a[i][c]=++sum; ++c;--b;} for(e=0;e<n;e++){ for(d=0;d<n;d++) { printf("%d ",a[e][d]);}printf("\n");} }