拿捏--->杨辉三角

news2024/12/23 17:27:57

文章目录

  • 题目描述
  • 算法思路
  • 代码示例
    • 精简版
    • 优化版

题目描述

在屏幕上面打印杨辉三角。

算法思路

杨辉三角,是二项式系数在三角形中的一种几何排列。在欧洲,这个表叫做帕斯卡三角形。帕斯卡(1623----1662)是在1654年发现这一规律的,比杨辉要迟393年,比贾宪迟600年。杨辉三角是中国古代数学的杰出研究成果之一,它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合。
在这里插入图片描述

杨辉三角的特点:

  1. 每个数等于它上方两数之和。

  2. 每行数字左右对称,由1开始逐渐变大。

  3. 第n行的数字有n项。

  4. 前n行共[(1+n)n]/2 个数。

  5. 第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。

代码示例

基于以上杨辉三角所具有的特点,我们可以用代码进行实现。

精简版

在这里插入图片描述
像上面的杨辉三角我们可以把它抽象一下,将前面的空格去掉:
在这里插入图片描述

我们可以看出上述图像中的特点:

  1. 第一列和对角线都是1。
  2. 其余元素等于上一行两个元素相加的和。
#include <stdio.h>
int main()
{
	int arr[10][10] = { 0 };
	int i = 0;
	int j = 0;
	for (i = 0; i < 10; i++)
	{
		for (j = 0; j <= i; j++)
		{
			if (j == 0)
				arr[i][j] = 1;
			if (i == j)
				arr[i][j] = 1;
			if(i>=2&&j>=1)
				arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
		}
		
	}
	for (i = 0; i < 10; i++)
	{
		for (j = 0; j <= i; j++)
		{
			printf("%-4d ", arr[i][j]);
		}
		printf("\n");
	}
	return 0;
}

在这里插入图片描述

优化版

我们发现在精简版的实现中,我们把杨辉三角有关数字打印出来了,但是我们没有打印出空格,我们发现在第一行数字、第二行…前面都有空格符,所以优化版主要解决空格问题。

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/828560.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《金融数据保护治理白皮书》发布(137页)

温馨提示&#xff1a;文末附完整PDF下载链接 导读 目前业界已出台数据保护方面的治理模型&#xff0c;但围绕金融数据保护治理的实践指导等尚不成熟&#xff0c;本课题围绕数据保护治理的金融实践、发展现状&#xff0c;探索和标准化相关能力要求&#xff0c;归纳总结相关建…

AI算法图形化编程加持|OPT(奥普特)智能相机轻松适应各类检测任务

OPT&#xff08;奥普特&#xff09;基于SciVision视觉开发包&#xff0c;全新推出多功能一体化智能相机&#xff0c;采用图形化编程设计&#xff0c;操作简单、易用&#xff1b;不仅有上百种视觉检测算法加持&#xff0c;还支持深度学习功能&#xff0c;能轻松应对计数、定位、…

电压放大器工作在什么状态

电压放大器是一种广泛应用于电子电路中的基本电路元件&#xff0c;其主要功能是将输入信号的电压放大到所需的输出电压幅值&#xff0c;并且保持信号的形状不变。在实际电路设计中&#xff0c;电压放大器的工作状态会受到多种因素的影响&#xff0c;比如输入信号的频率、放大倍…

em3288 linux_4.19 sd卡调试

默认配置&#xff0c;根据实际配置即可。

深度学习——常见注意力机制

1.SENet SENet属于通道注意力机制。2017年提出&#xff0c;是imageNet最后的冠军 SENet采用的方法是对于特征层赋予权值。 重点在于如何赋权 1.将输入信息的所有通道平均池化。 2.平均池化后进行两次全连接&#xff0c;第一次全连接链接的神经元较少&#xff0c;第二次全连…

基于图像形态学处理的停车位检测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1. 图像预处理 4.2. 车辆定位 4.3. 停车位检测 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 ......................................…

python中for..in语法的原理?

今天发现了python中一个比较有意思的小设计。 如果要通过中括号[]访问元素&#xff0c;需要重写__get__item()函数&#xff0c;这个应该没什么疑问&#xff0c;测试代码如下&#xff1a; class Classroom:def __init__(self, students):self.students studentsdef __getitem…

为什么程序员每到一家新公司干了两三年,都有一种干不下去的感觉?

行业内有句话叫&#xff1a;“程序员跳一次等于干三年”。但是程序员这个岗位怎么说呢&#xff1f; 小伙伴都知道的&#xff0c;工作强度完全看运气&#xff0c;有的公司忙到头都秃了&#xff0c;也有的公司闲到抠脚。 而收入呢?在一家公司待着&#xff0c;基本上是万年不涨的…

【C语言初阶(19)】实用的 VS 调试技巧

文章目录 Ⅰ 调试的介绍Ⅱ 常用调试快捷键Ⅲ 调试的时候查看程序当前信息⒈查看临时变量的值⒉查看内存信息⒊查看调用堆栈⒋查看汇编信息⒌查看寄存器信息 Ⅳ 观察形参指针指向的数组Ⅴ 易于调试的代码该如何编写⒈const 修饰指针变量⒉良好代码示范 Ⅵ 编程中常见的错误 Ⅰ 调…

Mr. Cappuccino的第54杯咖啡——Mybatis运行原理

Mybatis运行原理 Mybatis运行的三个阶段Mybatis运行原理图 Mybatis运行的三个阶段 初始化阶段&#xff1a;读取并解析XML配置文件和注解中的配置信息&#xff0c;创建配置对象&#xff0c;并完成各个模块的初始化工作&#xff0c;底层采用建造者模式&#xff1b;代理封装阶段&…

Qt、C/C++环境中内嵌LUA脚本、实现LUA函数的调用执行

Qt、C/C环境中内嵌LUA脚本、实现LUA函数的调用执行 Chapter1. Qt、C/C环境中内嵌LUA脚本、实现LUA函数的调用执行1、LUA简介2、LUA脚本的解释器和编译器3、C环境中内嵌LUA执行LUA函数调用4、Qt内嵌LUA执行LUA函数调用5、运行结果6、内嵌LUA脚本在实际项目中的案例应用 Chapter1…

元宇宙是概念炒作?

关键字&#xff1a;万界星空、万界星空科技、工业元宇宙、AR数字孪生、工业数字孪生、汽车数字孪生、机械加工数字孪生 引言 近两年被“元宇宙”席卷了&#xff0c;好多人问也好多人在各大媒体讨论过&#xff1a;“元宇宙到底是个啥&#xff1f;” 想必你也一定有所耳闻&…

世界少棒经典赛·棒球1号位

世界少棒经典赛 1. 世界少棒经典赛的起源 详细描述世界少棒经典赛的历史起源。 世界少棒经典赛的历史起源可以追溯到1985年&#xff0c;那个夏天&#xff0c;它首次在美国新泽西州举行&#xff0c;那时只有来自美国的12支球队参赛&#xff0c;这些球队在当地的特伦顿市体育中…

meanshift算法通俗讲解【meanshift实例展示】

meanshift算法原理 meanshift算法的原理很简单。假设你有一堆点集&#xff0c;还有一个小的窗口&#xff0c;这个窗口可能是圆形的&#xff0c;现在你可能要移动这个窗口到点集密度最大的区域当中。 如下图&#xff1a; 最开始的窗口是蓝色圆环的区域&#xff0c;命名为C1。蓝…

【Linux命令200例】split将一个大文件拆分成多个小文件

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌&#xff0c;阿里云社区专家博主✌&#xff0c;2023年6月csdn上海赛道top4✌。 &#x1f3c6;本文已收录于专栏&#xff1a;Linux命令大全。 &#x1f3c6;本专栏我们会通过具体的系统的命令讲解加…

Java多线程(四)

目录 一、线程的状态 1.1 观察线程的所有状态 1.2 线程状态和状态转移的意义 1.2.1 NEW、RUNNABLE、TERMINATED状态转换 1.2.2 WAITING、BLOCKED、TIMED_WAITING状态转换 1.2.3 yield()大公无私让出cpu 一、线程的状态 1.1 观察线程的所有状态 public class Demo9 {public st…

HTML5网页设计小案例:网页导航栏的设计

什么是导航栏&#xff0c;按我的理解就是位于网页顶部或者侧边一组链接或者按钮&#xff0c;用来指导大家找到网页的不同板块&#xff0c;大家可以一目了然的找到自己想看的板块内容。今天我们设计一个位于网页顶部的的导航栏。按我的生活经验来说&#xff0c;网页的顶部导航栏…

人机融合意识与人类的意识的区别

人机融合意识是指人类与计算机系统之间建立起密切的交互和协作关系&#xff0c;形成一种共同的意识和认知状态。人机融合意识与人类意识存在一些本质上的区别&#xff0c;可以从以下几个方面进行区分&#xff1a; 原始性&#xff1a;人类的意识是自然生命的产物&#xff0c;伴随…

怎样在Apipost中设计出实用又好看的API文档

Apipost一直推荐文档先行的API设计理念&#xff0c;在Apipost中可以添加Markdown格式的文本&#xff0c;用以储备文档和API文档设计。 作为一种轻量级标记语言&#xff0c;Markdown在撰写文档、博客文章、README文件以及网站内容上被广泛使用。 如何在Apipost中设计出漂亮的文…

在coopeliasim中打开场景对象属性的三种方式

一、点击[Menu bar --> Tools --> Scene object properties] 二、点击界面左侧按钮 三、双击场景层次结构中的对象图标