目录

1.第一步:

2.第二步

3.第三步

4.第四步

5.第五步

普遍方案


我们先以6*6的为例,文章尾有更普遍的方法

#include<stdio.h>
int main()
{int arr[6][6];//创建6*6的二维数组for (int i = 0; i < 6; i++){for (int j = 0; j < 6; j++){arr[i][j] = 1;}}//将二维数组中所有元素初始化为1for (int i = 1; i < 6; i++){for (int j = 1; j < i; j++){arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];}}//该元素=该元素上面的元素+该元素上面的元素的前面一个元素for (int i = 0; i < 6; i++){for (int j = 0; j < 15 - 3 * i; j++)printf(" ");//将对角线布满空格for (int j = 0; j <= i; j++)printf("%6d", arr[i][j]);//将加完后的二维数组,只打印其左下角printf("\n");}return 0;
}

先说一下思路

1.第一步:

通过两层循环,遍历二维数组,将其都赋值为1。

 int arr[6][6];for (int i = 0; i < 6; i++){for (int j = 0; j < 6; j++){arr[i][j] = 1;}}


2.第二步

j<i,只取数组行大于列的部分

for (int j = 1; j < i; j++)


3.第三步

这是小学时学过的规律,

得到该公式尤为重要,

该元素=该元素上面的元素+该元素上面的元素的前面一个元素,

arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];

在二维数组中实现的方式

将最终我们要输出的结果与现在对比,数值上是相同的,现在我们将格式变化。


4.第四步

这里的格式(j<15-3*i)是最多样的,不同规格的杨辉三角形有不同的大小,这里的答案也不唯一,可以将间距弄小点也可弄大点,主要看你要打印的杨辉三角的规格。

但有几点是可以确定的,(1)  15的是需要不小于 k * i(k为这里的3,也是i的系数)的最大值。(2)k的增大与减小会影响前面的空格数量,效果如此。

     for (int j = 0; j < 15 - 3 * i; j++)printf(" ");

该行代码是需要打印蓝色阴影区域的空格,右边的黑块不用做任何操作,打印完一行最后的元素后,及时的换行。

将下面的域宽%6d,先写出来,在根据上面我给出的规律,对(n-k*i)尝试几个值,很容易尝试出来。

当然如果你不希望多次尝试,我也将规律总结出来,(3*N-3*i),N为你定义杨辉三角形的大小。


5.第五步

     for (int j = 0; j <= i; j++)printf("%6d", arr[i][j]);printf("\n");

(1) j<i,只取数组行大于列的部分,也就是上面利用杨辉三角公式的部分二维数组。

(2)%6d,域宽为6,右对齐,直接写6即可,不必更改。


普遍方案(答案)

上面是思路,根据思路,我们总结出更加普遍的方法(更改宏定义中N的大小即可)

#include<stdio.h>
#define N 8
int main()
{int arr[N][N];for (int i = 0; i < N; i++){for (int j = 0; j < N; j++){arr[i][j] = 1;}}for (int i = 1; i < N; i++){for (int j = 1; j < i; j++){arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];}}for (int i = 0; i < N; i++){for (int j = 0; j < 3*N - 3 * i; j++)printf(" ");for (int j = 0; j <= i; j++)printf("%6d", arr[i][j]);printf("\n");}return 0;
}

最详细的杨辉三角形的讲解相关推荐

  1. 详细的线程池讲解,手写C与C++版本

    详细的线程池讲解,手写C与C++版本 在此感谢苏丙榅的教程讲的很详细,我看了他的C版本教程,对线程池有了深刻理解,手写了C版本,并自主改了C++版本. 线程池是消费者生产者模型的其中之一.这里面的线程 ...

  2. 一个很详细的web.xml讲解(转)

    <?xml version="1.0" encoding="UTF-8"?>  <!DOCTYPE web-app PUBLIC " ...

  3. HTML学习知识点大全-----超详细(各种标签使用讲解及案例)

    HTML学习知识点大全-----超详细(各种标签使用讲解及案例) 1:概念 **最基础的网页开发语言 *Hyper Text Markup language:超文本标记语言超文本:运用了超链接的方法, ...

  4. 动态规划27k字超详细保姆级入门讲解——附DP经典线性、区间、二维图、四维8个模型题解

    动态规划27k字超详细保姆级入门讲解 写在前面: 这篇文章是目前为止我写过最长也是最久的文章,前面关于DP的讲解我查阅了大量的博客资料,学习其他博主对DP的理解,也翻阅了很多经典的纸质书籍,同时做了近 ...

  5. python中堆排序_python堆排序,详细过程图和讲解,这样做小白都会

    ### 正文前的扯淡 之前电话面试一个公司时,面试官让写一个堆排序,遗憾的是我忘了堆排序的思想了,所以直接说不会写,这次电面也以失败告终...知耻后勇,这几天在网上找了很多写堆排序的帖子,但是帖子质量 ...

  6. python堆堆乐教程_python堆排序,详细过程图和讲解,这样做小白都会

    ### 正文前的扯淡 之前电话面试一个公司时,面试官让写一个堆排序,遗憾的是我忘了堆排序的思想了,所以直接说不会写,这次电面也以失败告终...知耻后勇,这几天在网上找了很多写堆排序的帖子,但是帖子质量 ...

  7. 人脸识别:史上最详细人脸识别adaface讲解-ckpt转onnx模型--第三节

    这章节我会讲解的是我在工作上的项目,人脸识别adaface,以下的讲解为个人的看法,若有地方说错的我会第一时间纠正,如果觉得博主讲解的还可以的话点个赞,就是对我最大的鼓励~ 上一章节我们讲到了模型的训 ...

  8. stm32 基于TouchGFX显示视频动画的详细制作过程和讲解

    stm32 使用TouchGFX显示太空人动画详细制作过程 文章目录 1.素材处理 2.Touchgfx移植 3.使用控件animated image 4.仿真和烧录看效果 5.增加启动和暂停控制 1 ...

  9. char类型怎么输入 c语言_还没搞懂C语言指针?这里有最详细的纯干货讲解(附代码)...

    21ic综合自网络信息 指针对于C来说太重要.然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机硬件以及操作系统等方方面面的基本知识.所以本文尽可能的通过一篇文章完全讲解指针. 为什么 ...

最新文章

  1. 醒醒,迪卡侬请停止“低调”!
  2. 利用python进行数据分析论文_利用Python进行数据分析之pandas的高级用法
  3. python基础(part15)--迭代
  4. Linux下获取CPUID、硬盘序列号与MAC地址
  5. 7-45 银行业务队列简单模拟 (10 分)
  6. python中np.reshape与matlab中reshape区别,以及多axis的np.mean分析[探索6]
  7. java8流_Java8Stream流详解
  8. pandas 提取某几列_用Pandas做数据清洗,我一般都这么干……
  9. supervessel-免费云镜像︱GPU加速的Caffe深度学习开发环境
  10. Android系统信息获取 之十一:获取IMEI,IMSI号
  11. Android Wear缺少本质上的创新
  12. 制作一个简单HTML中华传统文化网页(HTML+CSS)
  13. java设计模式之模板方法模式(Template Method)
  14. 设CPU共有16根地址线,8根数据线,并用MREQ (低电平有效) .作访存控制信号,R/W作读写命令信号(高电平为读,,低电平为写)。
  15. 计算机音乐因为我刚好遇见你,因为我刚好遇见你歌曲
  16. 1012循环神经网络 RNN 的实现
  17. 华为s5720默认用户名和密码_华为S5720常用命令
  18. 007-寄存器EAX与AX,AH,AL关系
  19. 勤于奋国外LEAD联盟赚钱注意事项
  20. python学习-绪

热门文章

  1. 学术规范与论文写作2022秋雨课堂期末答案
  2. Python函数的变量域
  3. android自定义u形线,Android实战之自定义View折线图
  4. linux(redhat\centos)下python创建沙盒环境
  5. SAP S/4 HANA轻聊
  6. RTX 7900xt和RX 6950 XT 差距 RTX7900xt和RX6950 XT参数对比
  7. 无极xp系统下载,win7系统下载,win8系统下载站
  8. HTML|制作注册个人信息填写表
  9. 免费伪原创工具,在线伪原创工具,文章采集发布伪原创工具
  10. Linux C/C++后台开发高级架构师进阶指南-剑指腾讯T9