当前位置: 首页 > news >正文

用C语言高效地打印杨辉三角

假设杨辉三角的通项公式为a(n),则打印形式如下:

然而我们知道,它应该是这样的:

三角形两边的值都为1,且每个元素的值都为该元素正上方和其正上方前面的元素的值之和。

为了实现这个代码,我们需要知道每行首元素和每行最后一个元素的下标随着行的变化而对应的函数表示。我们很容易得到:

 

然后利用定义,也即: 每个元素的值都为该元素正上方和其正上方前面的元素的值之和。

易得:

很自然的,我们实现了关于杨辉三角的打印的相关代码。 以下是代码,具体信息已经写在注释里了。

#include <stdio.h>//b函数返回的是第n行第一个元素的下标
int b(int n)
{return (n * n - n + 2) / 2;
}//c函数返回的是第n行最后一给元素的下标
int c(int n)
{return (n * n + n) / 2;
}int main()
{int n;int a[10000] = {0};int row = 1;printf("请输入要打印的行数:>");scanf("%d", &n);int i = 1;//打印行while (row <= n){//将每行的两边的元素都置为1a[b(row)] = 1;a[c(row)] = 1;//打印列for (int j = 0; j < row; j++){if (c(row) - b(row) > 1){//只要每一行的首尾之间还有元素则进去for (int i = 1; b(row) + i < c(row);i++){//利用杨辉三角的定义,为每个元素计算出值a[b(row) + i] = a[b(row - 1) + (i - 1)] + a[b(row - 1) + i];}}printf("%-4d  ",a[i]);i++;}row++;printf("\n");}
}

程序的运行:

 

 

http://www.lryc.cn/news/117287.html

相关文章:

  • TCP/IP四层模型对比OSI七层网络模型的区别是啥?数据传输过程原来是这样的
  • 接口测试实战,Jmeter正则提取响应数据-详细整理,一篇打通...
  • 基于自适应变异粒子群优化BP神经网络 的风速预测,基于IPSO-BP神经网络里的风速预测
  • MySQL—日志
  • uniapp 扩展组件 uni-forms 的表单验证之 validateFunction 只响应一次
  • 每日一题8.10 lc39
  • 贝叶斯深度学习的温和介绍
  • 无涯教程-Perl - glob函数
  • 前端先行模拟接口(mock+expres+json)
  • 老师如何制作学生分班信息查询系统?
  • Java实战:高效提取PDF文件指定坐标的文本内容
  • centos磁盘满了,怎么清理大文件
  • AIGC:【LLM(四)】——LangChain+ChatGLM:本地知识库问答方案
  • 企业在线产品手册可以这样做,小白也能轻松上手
  • crypto-js中AES的加解密封装
  • 【计算机视觉】MoCo v2 讲解
  • 如何解决亚马逊银行账户验证问题?来看看这些技巧吧!
  • Android多渠道打包+自动签名工具 [原创]
  • nodejs实现解析chm文件列表,无需转换为PDF文件格式,在线预览chm文件以及目录,不依赖任何网页端插件
  • .net core background service
  • 前端开发的工作职责精选【10篇】
  • SpringBoot 升级内嵌Tomcat
  • react搭建在线编辑html的站点——引入grapes实现在线拖拉拽编辑html
  • Nginx反向代理服务配置和负载均衡配置
  • react钩子函数理解
  • 医疗保健中的 NLP:实体链接
  • java编程规范
  • 合宙Air724UG LuatOS-Air script lib API--sim
  • 【网络基础实战之路】基于三个分公司的内网搭建并连接运营商的实战详解
  • (Python)Requests+Pytest+Allure接口自动化测试框架从0到1搭建