列表

详情


NC22230. 回型矩阵

描述

给你一个整数n,按要求输出n∗n的回型矩阵

输入描述

输入一行,包含一个整数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");}
}

上一题