矩阵填充问题

xiaoxiao2021-02-28  108



题目描述

填充如下形式的方阵:    1  16  15  14  13    2  17  24  23  12    3  18  25  22  11    4  19  20  21  10    5   6   7   8   9

输入描述

在一行中输入一个整数n(0<n<10,n为奇数),表示矩阵的阶。

输出描述

输出填充后的矩阵,每个数字占4位。

输入样例

5

输出样例

1 16 15 14 13 2 17 24 23 12 3 18 25 22 11 4 19 20 21 10 5 6 7 8 9

提示

AC代码如下:

#include<stdio.h> int fillmatrix(int mat[10][10],int size,int num,int offset,int a) {     int i;     if(size==1)         mat[a/2][a/2]=a*a;     else         {             for(i=0;i<size-1;i++)             {                 mat[offset+i][offset]=num+i;                 mat[offset+size-1][offset+i]=num+size-1+i;                 mat[offset+size-1-i][offset+size-1]=num+2*(size-1)+i;                 mat[offset][offset+size-1-i]=num+3*(size-1)+i;                 fillmatrix(mat,size-2,num+4*(size-1),offset+1,a);               }//递归填充内核;(小了一圈的矩阵)         }         return mat[offset][offset]; } int  main() {     int size,i,j,a;     int mat[10][10];     while(scanf("%d",&size)!=EOF)         {             a=size;             int offset=0;             int num=1;             fillmatrix(mat,size,num,offset,a);             for(i=0;i<size;i++)     {         for(j=0;j<size;j++)             printf("M",mat[i][j]);         printf("\n");     }        }        return 0; }

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

最新回复(0)