矩阵填充问题2

xiaoxiao2021-02-28  102



题目描述

给定一个nxn(n<10)的方阵,请输出左上角开始逆时针从大到小填充方阵的结果。

输入描述

输入方阵的大小n。

输出描述

方阵填充结果,每个数字均占两位并右对齐,以一个空格隔开。

输入样例

4

输出样例

16 5 6 7 15 4 1 8 14 3 2 9 13 12 11 10

提示

AC代码如下:

#include<stdio.h>

int FM(int a[10][10],int s,int n,int f,int m) {     int i;     if(s==1)         a[m/2][m/2]=1;     else     {         for(i=0;i<s-1;i++)         {             a[f+i][f]=n-i;             a[f+s-1][f+i]=n-(s-1)-i;             a[f+s-1-i][f+s-1]=n-2*(s-1)-i;             a[f][f+s-1-i]=n-3*(s-1)-i;             FM(a,s-2,n-4*(s-1),f+1,m);         }     }     return a[f][f]; } int main() {     int s,i,j,m;     int a[10][10];     scanf("%d",&s);         m=s;         int f=0;         int n;         n=m*m;         FM(a,s,n,f,m);         for(i=0;i<s;i++)         {             for(j=0;j<s;j++)                 printf("- ",a[i][j]);             printf("\n");         }     return 0; }

注:和矩阵填充的题目很相似   要变得东西很少;

转载请注明原文地址: https://www.6miu.com/read-49719.html

最新回复(0)