递归实现矩阵填充

C++递归实现矩阵填充

#include<iostream>
#include<iomanip>
using namespace std;
const int N=5;
void FillMatrix(int matrix[N][N],int size,int number,int offset){
    //matrix为总矩阵,size为剩余矩阵的大小,假设为方阵
    //number为第一个要填的数,offset为剩余矩阵在总矩阵中的位置
    //递归终止条件1
    if(size==0) return;
    //递归终止条件2
    if(size==1){
        matrix[offset][offset]=number;
        return;
    }
    //填充外围
    int i;
    for(i=0;i<size-1;i++){
        matrix[offset+i][offset]=number+i;
        matrix[offset+size-1][offset+i]=number+size-1+i;
        matrix[offset+size-1-i][offset+size-1]=number+size-1+size-1+i;
        matrix[offset][offset+size-1-i]=number+size-1+size-1+i+size-1;
    }
    //填充内部小圈
    FillMatrix(matrix,size-2,number+4*size-4,offset+1);
}
int main(){
    int i,j,test[N][N];
    FillMatrix(test,5,2,0);
    for(i=0;i<5;i++){
        for(j=0;j<5;j++){
            cout<<setw(4)<<test[i][j]<<' ';
        }
        cout<<endl;
    }
return 0;}

*代码来自于清华大学程序设计基础课程

我的微信公众号

猜你喜欢

转载自blog.csdn.net/sd4567855/article/details/79178283