栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

每日小知识----杨辉三角(C语言)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

每日小知识----杨辉三角(C语言)

各位看官:欢迎来到(每日小知识)

建议订阅专栏--> 每日小知识

也欢迎关注小编--> 小峰同学

赶快上跟着小编每天进步一点点,开心学习每一天。

如果觉得小编的文章对你有帮助,可以一键三连支持小编

你的支持才是小编最大的动力

本期重点:语言实现杨辉三角的两种主要思路

(法一):

知识点:

首先我们来了解一下杨辉三角的基础知识点:

  • 杨辉三角的两个腰边的数都是 1。
  • 其它位置的数都是上顶上两个数之和。
  • 行数等于最后一行的元素个数。
具体实现:

创建一个N阶的二维数组,并且初始化为0

int arr[N][N] = { 0 };
//由于他的行数和最后一行的元素个数相同,所以需要一个方阵。

然后给我们需要的位置赋值。

//每一行元素的初始化
	for (int i = 0; i < N; i++)
	{
		//两边赋值
		arr[i][0] = arr[i][i] = 1;//第一列和对角线

		//中间赋值
		if (i > 1)//从第三行开始才对中间开始赋值
		{
			for (int k = 1; k < i; k++)
			{
				arr[i][k] = arr[i - 1][k - 1] + arr[i - 1][k];
                //中间位置的数都是上顶上两个数之和。
			}
		}


    }

再接着就是打印杨辉三角

	for (int i = 0; i < N; i++)
	{
        //打印前面的空格
		for (int k = 0; k < N - i; k++)//这个N-i要经过推理得出
		{
			printf("   ");//这个是三个空格
		}
        //六个空格打印出来是一个方阵,减少一半打印出来就是一个等腰三角形



        //打印数据
		for (int k = 0; k < i+1; k++)
		{
			printf("%6d", arr[i][k]);
		}//注意这个6 最好是偶数,与上面的三个空格相对应的
        //如果是4的话上面的空格就要改为两个
        //如果这个数太小也不好,太小如果打印的行数太多就会格式混乱

		printf("n");
	}


(法二): 知识点:
  • 杨辉三角的任意一行都是的二项式系数展开
  • C00 和 C0n 是1
  • cnm = m!  / (n! * (m-n)!)
  • 二项式系数展开式为C0n ,C1n, C2n, ----Cnn。
  • n对应第n+1行。

直接上代码 思路和上面基本相同

#include
#define N 20

int fun(int n, int m)
{
	if (n == 0 || m == 0)
		return 1;
	if (n == m)
		return 1;
	
	long long sum1 = 1;//m的阶乘
	for (int i = 1; i <= m; i++)
	{
		sum1 *= i;
	}

	long long sum2 = 1;//n的阶乘
	for (int i = 1; i <= n; i++)
	{
		sum2 *= i;
	}
	//注意这里的阶乘是一个很大的数 建议用long 或者long long 
	//不然行数会受限制
	//用int 只能打印14行以内的杨辉三角
	long long sum3 = 1;//m-n的阶乘
	for (int i = 1; i <= (m-n); i++)
	{
		sum3 *= i;
	}

	return (int)(sum1 / (sum2 * sum3));//注意输出Cn m

}


int main()
{
	//直接打印
	for (int i = 0; i< N; i++)
	{
		//打印空格
		for (int k = 0; k < N - i; k++)
		{
			printf("   ");
		}
		//打印数据
		for (int k = 0; k < i + 1; k++)
		{
			
			printf("%6d", fun(k, i));

		}
		printf("n");
	}
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/857820.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号