蓝桥杯疑似例题解答方案(打印任意阶杨辉三角)

server/2024/11/25 16:40:14/

题目:输入n,打印n阶的杨辉三角


杨辉三角是一种特殊的由数字构成的三角形,边缘上的数字都是1,内部的数字则是左上角和右上角数字的加和。它本质上其实是二项展开的系数序列(我们通过这个性质可以给出一种与本篇文章的方法不同的解决方案,不过我们这次不讨论。)

事实上,在不适用二项展开序列的性质的前提下,单纯的计算杨辉三角的某个位置的数值已经过于复杂,因为这意味着你必须把以它为顶点的等腰倒三角的所有项都算出来以有利于你进行对它本身的运算,这给了我们很大的麻烦。

第二个难点在于,杨辉三角必须以特殊的方法进行打印,不然从终端(Terminal)上来看,就会从等腰三角形变成直角三角形,这个直角三角形看起来不是很美观,因此不合适。

下面我给出一种计算出并打印任意阶杨辉三角的解决方案,本方案基于加和定义给出。

前面几篇有关蓝桥杯例题的文章中我的代码都是一个int main解决一切的,有朋友批评我耦合度太高,事实上,因为我认为它们没有很大难度,因此没有必要进行低耦合的写法,一口气解决也就罢了。但是为了回应这种质疑声,我这次采取低耦合的方法写,将代码拆分出两个功能性函数funcSetOne()和funcSetOther()。

警告:由于十进制导致的问题,有些数字是一位的,有些是两位的,大一些的数字有四五位的,由于它们长度不同,因此打印杨辉三角的时候,很有可能会从某阶开始歪掉,这是正常情况,也是无可奈何的事情。

下面展示完整的代码:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void funcSetOne(int arr[30][30],int a) {int u = 0; int t = 0;t = a;while (u < t) {arr[u][a] = 1;u++; a--;}u = 0; a = t;while (u < a) {arr[u][t] = 1;u++; t++;}
}
void funcSetOther(int arr[30][30], int a) {int u = 2; int t = 0;t = a;while (u < t) {arr[u][a] = arr[u - 1][a - 1] + arr[u - 1][a + 1];u++; a--;}u = 2; a = t;while (u < a) {arr[u][t] = arr[u - 1][t - 1] + arr[u - 1][t + 1];u++; t++;}
}
int main()
{int input = 0; int t = 0;int ctrl_1 = 0;int ctrl_2 = 0;int arr[30][30] = { 0 };scanf("%d", &input);ctrl_1 = input;funcSetOne(arr,ctrl_1);if (ctrl_1 > 2) {for (ctrl_2 = 2; ctrl_2 < input - 1; ctrl_2++) {funcSetOther(arr, ctrl_1+t);t+=2;}}int x = 0, y = 0;for (x = 0; x < input; x++) {for (y = 0; y < 2 * input + 1; y++) {if (arr[x][y] == 0) {printf(" ");}else {printf("%d", arr[x][y]);}}printf("\n");}return 0;
}


http://www.ppmy.cn/server/144843.html

相关文章

力扣-位运算-2【算法学习day.42】

前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非常非常高滴&am…

从RNA测序数据中推断差异RNA编辑位点的统计推断

从RNA测序数据中推断差异RNA编辑位点的统计推断 描述 本仓库包含两个R函数,用于运行REDITs(RNA编辑测试)来调用差异RNA编辑位点: 在病例-对照(或条件1 vs 条件2)队列之间显著不同的RNA编辑位点 由REDIT-LLR(RNA编辑测试 - 对数似然比)处理显著与分类变量(例如性别、…

神经网络(系统性学习四):深度学习——卷积神经网络(CNN)

相关文章&#xff1a; 神经网络中常用的激活函数神经网络&#xff08;系统性学习一&#xff09;&#xff1a;入门篇神经网络&#xff08;系统性学习二&#xff09;&#xff1a;单层神经网络&#xff08;感知机&#xff09;神经网络&#xff08;系统性学习三&#xff09;&#…

【数据结构】【线性表】一文讲完队列(附C语言源码)

队列 队列的基本概念基本术语基本操作 队列的顺序实现顺序队列结构体的创建顺序队列的初始化顺序队列入队顺序队列出队顺序队列存在的问题分析循环队列代码汇总 队列的链式实现链式队列的创建链式队列初始化-不带头结点链式队列入队-不带头节点链式队列出队-不带头结点带头结点…

【Pytest+Yaml+Allure】实现接口自动化测试框架

一、框架思想 requestsyamlpytestallure实现接口自动化框架。结合数据驱动和分层思想&#xff0c;将代码与数据分离&#xff0c;易维护&#xff0c;易上手。使用yaml编写编写测试用例&#xff0c;利用requests库发送请求&#xff0c;使用pytest管理用例&#xff0c;allure生成…

在ubuntu中查看csv

在 Ubuntu 中查看 CSV 文件的内容有多种方法。以下是一些常用的方法&#xff1a; 使用命令行工具 cat 命令 如果文件不大&#xff0c;可以使用 cat 命令快速查看文件内容&#xff1a; cat 10_11_query.csvless 命令 对于较大的文件&#xff0c;less 是一个更好的选择&#xf…

高新技术行业中的知识管理:关键性、挑战、策略及工具应用

知识管理的关键性 在瞬息万变的信息时代&#xff0c;知识已成为高新技术行业的核心竞争要素。知识管理&#xff0c;这一旨在高效组织、整合并应用企业内外部知识资源的管理策略&#xff0c;对于推动高新技术企业的持续创新与发展至关重要。它不仅能够激发研发团队的创造力&…

【数据结构】—— 线索二叉树

引入 我们现在提倡节约型杜会&#xff0c; 一切都应该节约为本。对待我们的程序当然也不例外&#xff0c;能不浪费的时间或空间&#xff0c;都应该考虑节省。我们再观察团下图的二叉树&#xff08;链式存储结构)&#xff0c;会发现指针域并不是都充分的利用了&#xff0c;有许…