打印蛇形矩阵
2016-09-02 12:57
204 查看
题目说明
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
样例输入
5
样例输出
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
接口说明
原型
void GetResult(int Num, int* pResult);
输入参数:
int Num:输入的正整数N
输出参数:
int * pResult:指向存放蛇形矩阵的整形指针
指针指向的内存区域保证有效
返回值:
void
分析:对于样例输入5,我们可以得到如下的一个结果A:
![](http://img.blog.csdn.net/20160902125502137)
假设形式B中的序号从1开始,i表示行,j表示列,i,j∈{1,2,3,…,n};构成的是以一个n*n的二维矩阵。从图中的箭头方向可以看出只要求出某一个格子左下角的数就可以求出当前数。假如当前值为B[i][j],如下图:
![](http://img.blog.csdn.net/20160902125559764)
如果要求B[i][j],只要知道B[i+1][j-1]就可以了。但是当j=1时,B[i][1]的值就是前i-1条负对角线上数字的个数-1,可以使用求和公式,所以得出如下递推公式:
![](http://img.blog.csdn.net/20160902125647499)
对于程序流程来说,我们要先计算矩阵第一列的值,然后使用循环就可以得到所有的值。
代码如下:
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
样例输入
5
样例输出
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
接口说明
原型
void GetResult(int Num, int* pResult);
输入参数:
int Num:输入的正整数N
输出参数:
int * pResult:指向存放蛇形矩阵的整形指针
指针指向的内存区域保证有效
返回值:
void
分析:对于样例输入5,我们可以得到如下的一个结果A:
假设形式B中的序号从1开始,i表示行,j表示列,i,j∈{1,2,3,…,n};构成的是以一个n*n的二维矩阵。从图中的箭头方向可以看出只要求出某一个格子左下角的数就可以求出当前数。假如当前值为B[i][j],如下图:
如果要求B[i][j],只要知道B[i+1][j-1]就可以了。但是当j=1时,B[i][1]的值就是前i-1条负对角线上数字的个数-1,可以使用求和公式,所以得出如下递推公式:
对于程序流程来说,我们要先计算矩阵第一列的值,然后使用循环就可以得到所有的值。
代码如下:
#include <stdio.h> #include <stdlib.h> #include <iostream> using namespace std; int main() { int n,i,j; while(cin >> n){ if(n>100 || n<1) return 0; if (n == 1){ printf("1\n"); return 0; } int *arr = new int[n*n]; //对矩阵的第一列进行赋值 for ( i=0; i<n; i++){ arr[i*n+0] = i*(i+1)/2 + 1; } //然后对除第一列以外的单元格进行赋值,列优先 //arr[i][j] = a[i+1][j-1] + 1; for ( j=1; j<n; j++){ for ( i=0; i+j < n; i++){ //arr[i][j] = a[i+1][j-1] + 1; arr[i*n + j] = arr[(i+1)*n + (j-1)] + 1; } } for ( i=0; i<n; i++){ for ( j=0; j+i <n-1; j++){ printf("%d ",arr[i*n+j]); } printf("%d",arr[i*n+j]); printf("\n"); } delete []arr; } //system("pause"); return 0; }
相关文章推荐
- 给一个正整数N,打印NxN的蛇形矩阵(二) 之空间复杂度O(1)
- 2014年小米笔试题 蛇形矩阵打印
- 算法题:蛇形打印矩阵
- 蛇形打印矩阵
- 12 蛇形打印矩阵中的数据
- 给一个正整数N,打印NxN的蛇形矩阵(二) 之空间复杂度O(1)
- php打印蛇形回路二维矩阵问题
- rust--打印蛇形矩阵
- 用C++实现打印蛇形矩阵
- 蛇形打印矩阵,时间复杂度O(n)
- 顺时针打印矩阵(蛇形填空)(两种方式实现)
- 20.蛇形矩阵打印
- (C#)打印蛇形正方形矩阵
- 剑指Offer--020-顺时针打印矩阵(蛇形打印矩阵)
- 算法题1:蛇形打印矩阵
- [腾讯]打印蛇形矩阵
- 腾讯2016实习生编程题蛇形矩阵打印
- Array-----59. Spiral Matrix II(蛇形打印矩阵)
- 打印蛇形矩阵
- 打印蛇形矩阵