打印蛇形矩阵
来源:互联网 发布:商品条形码制作软件 编辑:程序博客网 时间:2024/05/16 12:59
题目:
对于给定的n,打印出如下型式的蛇形矩阵。例如
n=3时输出:
1 2 3 8 9 4 7 6 5
n=4时输出: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7
用一个矩阵保存需要输出的数字,使用递归,每次计算最外层的数字。直到只剩下1列或者2列。
使用一维数组保存方阵。参数n表示n*n的方阵,参数m表示每次计算的是m*m的小方阵,a是小方阵的第一个元素地址,小方阵的第一个数字是s。
voidfun(int *a, int n,int m, int s){if(n<=0||m<=0)return;if(m==1)//只有一个数{a[0] = s;return;}if(m==2)//只有2行2列时{a[0] = s;a[1] = s+1;a[n*(m-1)+1] = s+2;a[n*(m-1)] = s+3;return ;}int v=s;///起始的数值for(int i=0; i<m; i++,v++)//→ 第一行,向右,最简单{a[i] = v ;//a[0][i]}for(int i=1, t=n; i<m; i++,v++,t+=n)//↓最外层向下的列,注意每增加行号加1时,地址+n{a[m-1+t] = v;//a[i][m-1]}for(int i=m-2,t=(m-1)*n;i>=0;i--,v++)//←最后一行,向左{a[t+i] = v;//a[m-1][i]}for(int i=m-2,t=(m-2)*n;i>0;i--,v++,t-=n)//↑最外层,向上的列,行号减1时地址-n。{a[t] = v; //a[i][0]}fun(a+n+1,n,m-2,v);//递归求解里面的小方阵。注意小方阵起始地址增加了n+1,列数减少了2.}
0 0
- C++ 打印蛇形矩阵
- Java打印蛇形矩阵
- 打印输出蛇形矩阵
- 打印蛇形矩阵
- 打印蛇形矩阵
- 打印蛇形矩阵-题解
- [腾讯]打印蛇形矩阵
- 打印蛇形矩阵
- 打印蛇形矩阵
- 打印蛇形矩阵
- 打印蛇形矩阵
- 蛇形打印矩阵
- 打印蛇形矩阵
- 打印蛇形矩阵
- 打印蛇形矩阵
- 20.蛇形矩阵打印
- 不用数组打印蛇形矩阵
- (C#)打印蛇形正方形矩阵
- iOS 单例模式
- 在 Sublime Text 2 中编译和运行 Java 程序
- 数据结构中的运算规律
- git cherry-pick
- Unable to use SQL Server because ASP.NET version 2.0 Session State is not installed on the SQL serve
- 打印蛇形矩阵
- Ibatis查询数据库字段为空时的处理
- 表达式的值
- Spring :监听器ContextLoaderListener的作用
- C# Dictionary 的几种遍历方法
- js正则(获取所有迅雷地址)
- Insertion Sort List
- 有关case语句
- web.py处理url