矩阵填充问题

这是一个关于矩阵填充的编程问题,描述了如何使用递归方法填充一个矩阵,并给出了AC代码实现。程序接收矩阵大小作为输入,然后按照特定规则填充矩阵并打印结果。


题目描述

填充如下形式的方阵:
   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("%4d",mat[i][j]);
        printf("\n");
    }
       }
       return 0;
}



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值