打印金字塔式整齐杨辉三角

杨辉三角是比较基础的算法题,如果加上对齐,要求整齐不错位的金字塔式,需要考虑的细节就相对要多一些。

先说需求,输入行数,打印出整齐的金字塔式杨辉三角。

大体思路

将杨辉三角中的数都放到一个数组中,如果简单化,也可以放到2维数组中,行列的概念比较明显。

计算杨辉三角,cur[i]=last[i-1]+last[i],i取值从1到line-1,即去除首尾的闭区间。由于用到了前一行,所以需要加中间变量数组。

每个数占的宽度,比如有的1位数,有的2位数,需要取出最大元素,算出位数digitNum,作为宽度。

每行的对齐,第n行(从1开始)有n个元素,加上中间的空格,每行第一个元素要右移的距离为,(maxLine-curLine)*digitNum.

代码

#ifndef YANGHUITRIANGLE_H

#define YANGHUITRIANGLE_H

#include#includeclass YangHuiTriangle

{

public:

YangHuiTriangle(int nLines);

std::vectorgetTriangle() const;

std::vector> getTriangle2D() const;

void printTriangle() const;

private:

uint32_t m_nLines__;///m_vecTriangle__;///

#include "YangHuiTriangle.h"

#includeusing namespace std;

YangHuiTriangle::YangHuiTriangle(int nLines):m_nLines__(nLines),m_nMaxEle__(0),m_nMaxEleWidth__(1)

{

vectorvecLast;

for(uint32_t i=0;ivecCur;

if(i<2){

vecCur.assign(i+1,1);

m_nMaxEle__=1;

}else{

vecCur.push_back(1);

for(uint32_t j=1;jYangHuiTriangle::getTriangle() const

{

return m_vecTriangle__;

}

std::vector> YangHuiTriangle::getTriangle2D() const

{

vector> vecRet;

uint32_t nLines=0;

for(uint32_t i=0;ivecLine;

for(uint32_t j=0;j

Qt工程链接  https://github.com/junbujianwpl/LeetcodePro

测试效果

Qt下测试通过。太古老的编译器如vc6之类的,snprintf得换成_snprintf。

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

1 6 15 20 15 6 1

1 7 21 35 35 21 7 1

1 8 28 56 70 56 28 8 1

1 9 36 84 126 126 84 36 9 1

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

1 6 15 20 15 6 1

1 7 21 35 35 21 7 1

1 8 28 56 70 56 28 8 1

1 9 36 84 126 126 84 36 9 1

1 10 45 120 210 252 210 120 45 10 1

1 11 55 165 330 462 462 330 165 55 11 1

1 12 66 220 495 792 924 792 495 220 66 12 1

1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1

1 14 91 364 1001 2002 3003 3432 3003 2002 1001 364 91 14 1

c语言金字塔杨辉三角怎么写,打印金字塔式整齐杨辉三角相关推荐

  1. c语言金字塔输出乘法表,python中打印金字塔和九九乘法表的几种方法

    # 打印九九乘法表 for i in range(1,10): for j in range(1,i+1): # x=i*j # print(i,'*',j,'=',x,end=' ') print( ...

  2. python打印杨辉三角,直角形和正三角形的杨辉三角

    一.编程题目         编程题目:python编程实现,打印直角形的杨辉三角,要求输入一个正整数n,表示打印的杨辉三角形层数,输入杨辉三角.在此基础上,实现打印正三角形的杨辉三角 二.输入输出样 ...

  3. 写的函数符号表里没有_你有没有想过,C语言 main 函数到底为啥这么写?

    但凡是学过C语言的人,都知道要先写main函数,然而很多时候我们看到的main函数却各有差异,这究竟是为啥?哪种是对的呢?今天我们就来聊聊main函数. 那么main函数一共有多少个版本呢? 1.ma ...

  4. 【C 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 追加键值对数据 | 更新键值对数据 )

    文章目录 一.追加键值对数据 二.更新键值对数据 三.完整代码示例 一.追加键值对数据 在上一篇博客 [C 语言]文件操作 ( 配置文件读写 | 写出或更新配置文件 | 逐行遍历文件文本数据 | 获取 ...

  5. Swift 语言概览 -自己在Xcode6 动手写1

    Swift 语言概览 -自己在Xcode6 动手写1 原文:Swift 语言概览 -自己在Xcode6 动手写1 Swift是什么? Swift是苹果于WWDC 2014发布的编程语言,这里引用The ...

  6. Go语言bufio包(读与写)

    Go语言bufio包(读与写) bufio:高效io读写 buffer缓存 io:input/output 将io包下的Reader,Write对象进行包装,带缓存的包装,提高读写的效率 ReadBy ...

  7. 简单介绍三个C语言图形库C语言其实最擅长的是写纯数据处理的程序 . 非得用C语言写个界面程序那将会变得很困难 . 我刚开始学C语言就是从hello world 开始的 , 后来慢慢开始学从三个数中找

    C语言其实最擅长的是写纯数据处理的程序 . 非得用C语言写个界面程序那将会变得很困难 . 我刚开始学C语言就是从hello world 开始的 , 后来慢慢开始学从三个数中找出最大值 , 和对数组进行 ...

  8. 井字游戏(C语言版) 初级版,我写的完美版在另一篇文章

    //井字游戏(C语言版) 初级版,我写的完美版在另一篇文章 #include <stdio.h> typedef char chess[10]; typedef int temparr[1 ...

  9. 杨承润:世界首席创业家导师杨承润,创业16年,杨承润和他的《慧眼经营思维》

    哥伦比亚大学的校长曾说过:今天世上有3种人,那些理想想实现的人,那些看着理想的人以及根本搞不清楚状况的人.这就是为什么有的人一辈子只能做打工者而做不到管理,而有些人却能披荆斩棘,实现目标,走向走功. ...

最新文章

  1. Java NIO(New I/O)的三个属性position、limit、capacity
  2. 测试思想 什么是软件测试(摘录)
  3. BatchQC包可视化分析去除组学数据批次效应
  4. 网络营销外包——网络营销外包公司如何做好电子商务网站优化?
  5. Quartz 框架快速入门(四)
  6. c语言变量作为数组长度,为什么在C中不允许将数组的大小作为常量变量但在C中允许?...
  7. 听说你趁我不在家,欺负我老婆?
  8. 一个运维人创业的故事
  9. 浙江工业大学校赛 XiaoWei的战斗力
  10. 计算机组成原理第5版第六章答案,计算机组成原理第六章答案.docx
  11. 配置WindowsMobile仿真器上网
  12. 客户关系管理之会员管理
  13. 达尔豪西大学 计算机科学,西安大略大学和达尔豪西大学哪个好
  14. 设置数据表格中某行的颜色
  15. windows和Linux常用命令
  16. 【数据分析入门】R语言读写文本文件及RDATA文件
  17. DNS篇之DNS协议详解
  18. notifyDataSetChanged使用总结
  19. Barcode读取之barcode_param_majority_voting.hdev
  20. Flask最强攻略 - 跟DragonFire学Flask - 第十五篇 Flask-Script

热门文章

  1. python中文件读取失败_Python文件读取与异常
  2. Tessy软件下载安装使用试用购买
  3. 随机解调-多频点信号与伪随机序列混频
  4. [jeeplus] 使用笔记 (gridSelect、datetimepicker etc.) 问题汇总
  5. 简单分享对知识付费的看法
  6. cesium加载geoserver中发布的地图
  7. STM32 ADC输入采集电压
  8. Python往图片写入文字,插入图片的方法
  9. c语言区简单数据类型,c语言简单数据类型有哪些
  10. 什么是姿态角(Euler角)