数字方阵的旋转填充(递归方法)
来源:互联网 发布:淘宝客服分流顺序 编辑:程序博客网 时间:2024/04/29 15:19
数字方阵的旋转填充
void FillMatrix(int matrix[N][N],int size,int num,int offset){ //matrix为总矩阵,size为剩余矩阵的大小,num为要填的第一个数,offset为剩余矩阵在总矩阵中的位置 //递归终止条件 if(size==0) return; //递归终止条件 if(size==1) { matrix[offset][offset]=num; return; } //先填充外围 int i; for(i=0;i<size-1;i++) { matrix[offset+i][offset]=num+i; matrix[offset+size-1][offset+i]=num+(size-1)+i; matrix[offset+size-1-i][offset+size-1]=num+2*(size-1)+i; matrix[offset][offset+size-1-i]=num+3*(size-1)+i; } //再递归填充内核(小了一圈的子矩阵) FillMatrix(matrix,size-2,num+4*(size-1),offset+1);}
其原理如图所示一圈圈的填充,
测试代码:
int main(){ int Matrix[5][5]; FillMatrix(Matrix,5,1,0); int i,j; for(i=0;i<5;i++) { for(j=0;j<5;j++) { cout<<setw(4)<<Matrix[i][j]<<" "; } cout<<endl; } return 0;}
测试结果:
示例2
给定一个nxn(n<10)的方阵,请输出左上角开始逆时针从大到小填充方阵的结果。
输入方阵的大小n,输出方阵填充结果,每个数字均占两位并右对齐,以一个空格隔开。
#include<iostream>#include<iomanip>using namespace std;const int N=10;void FillMatrix(int matrix[N][N],int size,int num,int offset){ //matrix为总矩阵,size为剩余矩阵的大小,num为要填的第一个数,offset为剩余矩阵在总矩阵中的位置 //递归终止条件 if(size==0) return; //递归终止条件 if(size==1) { matrix[offset][offset]=num; return; } //先填充外围 int i; for(i=0;i<size-1;i++) { matrix[offset+i][offset]=num-i; matrix[offset+size-1][offset+i]=num-(size-1)-i; matrix[offset+size-1-i][offset+size-1]=num-2*(size-1)-i; matrix[offset][offset+size-1-i]=num-3*(size-1)-i; } //再递归填充内核(小了一圈的子矩阵) FillMatrix(matrix,size-2,num-4*(size-1),offset+1);}int main(){ int Matrix[N][N]; int n; cin>>n; FillMatrix(Matrix,n,n*n,0); int i,j; for(i=0;i<n;i++) { for(j=0;j<n;j++) { cout<<setw(2)<<Matrix[i][j]<<" "; } cout<<endl; } return 0;}
执行结果:
来自清华大学MOOC课件
0 0
- 数字方阵的旋转填充(递归方法)
- 数字旋转方阵和上三角(递归问题)
- MOOC清华《程序设计基础》第5章:数字旋转方阵的填充-算法一
- MOOC清华《程序设计基础》第5章:数字旋转方阵的填充-算法二
- 数字旋转方阵(c#数组的使用)
- 数字旋转方阵
- 数字旋转方阵
- 数字旋转方阵 分治法
- 分治法:数字旋转方阵
- 蓝桥杯之最简单的分治法-----数字旋转方阵
- 递归经典算法之多转向旋转方阵
- 分治算法之数字旋转方阵问题
- 螺旋方阵(递归)
- 旋转方阵
- 旋转方阵
- 数字方阵
- 直接写屏的方法输出有规律的数字方阵
- 递归方法填充树型目录(treeview)
- C语言之链表详细操作及讲解
- 中医汤头歌
- 第七章T2
- Android Auto CompleteTexview
- 第七章T3
- 数字方阵的旋转填充(递归方法)
- HttpClient使用详解
- 第七章T4
- 双目运算符重载
- 字符串查找
- XXTEA加密算法C++版
- Soapui Pro 使用
- OC基础:继承.初始化方法,便利构造器
- 第七章T5