iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言如何实现动态开辟存储杨辉三角
  • 186
分享到

C语言如何实现动态开辟存储杨辉三角

2023-06-29 11:06:05 186人浏览 薄情痞子
摘要

本文小编为大家详细介绍“C语言如何实现动态开辟存储杨辉三角”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言如何实现动态开辟存储杨辉三角”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。问题引入杨辉三角相必大家并

本文小编为大家详细介绍“C语言如何实现动态开辟存储杨辉三角”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言如何实现动态开辟存储杨辉三角”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

问题引入

杨辉三角相必大家并不陌生,第1行有1列、第二行有2列…第n行有n列,且每行行首和行尾的值都为1,其余的值为上一行两数相加

C语言如何实现动态开辟存储杨辉三角

我们在C语言阶段,第一次碰到的杨辉三角应该都是用常规的二维数组存储,可以观察到,用绿色填充的空间都是没有被利用的。

存储1行                   浪费0个

存储2行                   浪费1个

存储3行                   浪费3个 

存储4行                   浪费6个

                .

                .

                .

存储n行               浪费n*(n+1)/2-n个

C语言如何实现动态开辟存储杨辉三角

解决方法

这样极大浪费空间资源,今天我们就来试试动态开辟存储杨辉三角,可以灵活的开辟空间,充分的利用空间。

思路分析

首先用指针pp维护动态开辟的int*类型的指针,再通过int*类型的指针去维护动态开辟的int型数据存储杨辉三角

C语言如何实现动态开辟存储杨辉三角

C代码实现

#include <stdio.h>#include <stdlib.h>void PrintFree(int** pp, int numrows){//打印for (int i = 0; i < numrows; i++){for (int k = 0; k < numrows  -  i; k++){printf("   ");}for (int j = 0; j <= i; j++){printf("%4d", pp[i][j]);//可以根据打印的行数适当调整右对齐printf("   ");}printf("\n");}}//清理malloc出来的空间for (int i = 0; i < numrows; i++){free(pp[i]);pp[i] = NULL;}}int main(){//杨辉三角的行数int numrows;scanf("%d", &numrows);//开辟numrows个int*类型的指针用来维护int型的数据int** pp = (int**)malloc(sizeof(int*) * numrows);for (int i = 0; i < numrows; i++){//int型数据个数随着行数的增加而增加pp[i] = (int*)malloc(sizeof(int) * (i + 1));}for (int i = 0; i < numrows; i++){for (int j = 0; j <= i; j++){//每行的行首和行尾都是1if (j == 0 || i == j){pp[i][j] = 1;     //等价于 *(*(pp+i)+j)}//其余的就是上一行的两个数据相加else{pp[i][j] = pp[i - 1][j - 1] + pp[i - 1][j];}}}PrintFree(pp, numrows);return 0;}

大家可以根据需要打印的行数大小在上面的打印函数适当调整

C语言如何实现动态开辟存储杨辉三角

c++实现

用C++就非常方便了,STL中的vector就可以很方便的解决

#include <iOStream>#include <vector>using namespace std;//打印函数void Print(vector<vector<int>> vv, int numrows){for (int i = 0; i < numrows; i++){for (int j = 0; j <= i; j++){cout << vv[i][j] << "   ";}cout << endl;}}int main(){int numrows;cin >> numrows;vector<vector<int>> vv;for (int i = 0; i < numrows; i++){//每次开i+1个vector<int>vv.resize(i + 1);//每次开i+1个intvv[i].resize(i + 1);}for (int i = 0; i < numrows; i++){for (int j = 0; j <= i; j++){if (j == 0 || i == j){vv[i][j] = 1;}else{vv[i][j] = vv[i - 1][j - 1] + vv[i - 1][j];}}}Print(vv, numrows);return 0;}

读到这里,这篇“C语言如何实现动态开辟存储杨辉三角”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网其他教程频道。

--结束END--

本文标题: C语言如何实现动态开辟存储杨辉三角

本文链接: https://www.lsjlt.com/news/324443.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言实现动态开辟存储杨辉三角
    目录问题引入解决方法思路分析C代码实现C++实现问题引入 杨辉三角相必大家并不陌生,第1行有1列、第二行有2列…第n行有n列,且每行行首和行尾的值都为1,其余的值为上一...
    99+
    2024-04-02
  • C语言如何实现动态开辟存储杨辉三角
    本文小编为大家详细介绍“C语言如何实现动态开辟存储杨辉三角”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言如何实现动态开辟存储杨辉三角”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。问题引入杨辉三角相必大家并...
    99+
    2023-06-29
  • C语言怎么实现杨辉三角
    本篇内容介绍了“C语言怎么实现杨辉三角”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!杨辉三角——C语言实现杨辉三角:在屏幕上打印杨辉三角。1...
    99+
    2023-06-22
  • C语言如何实现打印杨辉三角
    这篇文章给大家分享的是有关C语言如何实现打印杨辉三角的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。题目描述打印杨辉三角(前N行)问题分析杨辉三角是中国古代数学的杰出研究成果之一,它把二项式系数图形化,把组合数内在...
    99+
    2023-06-22
  • Java语言实现杨辉三角
    一.提出问题。 使用二维数组打印出如下图的杨辉三角。 二.分析问题。 1.首先想要输出杨辉三角,就要找到它有什么规律? ①第n行有n个数字; ②每一行开始和结束的数字都为1; ③每一个数字都等于它的...
    99+
    2023-10-08
    java
  • C语言如何打印杨辉三角形
    小编给大家分享一下C语言如何打印杨辉三角形,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. 题目描述杨辉三角形解题之前,我们先来了解一下杨辉三角形到底是什么?杨...
    99+
    2023-06-29
  • C语言杨辉三角两种实现方法
    目录杨辉三角——C语言实现方法一:利用二维数组实现方法二(对方法一的改进): 总结杨辉三角——C语言实现 杨辉三角: 在屏幕上打印杨辉三角。 1 1 1 1 2 1 1 3 3 1...
    99+
    2024-04-02
  • C语言中杨氏矩阵与杨辉三角的实现方法
    一、杨氏矩阵 杨氏矩阵 1.杨氏矩阵的概念 在数学中,杨表(英语:Young tableau),又称杨氏矩阵。是对组合表示理论和舒伯特演算很有用的工具。它提供了一种方便的方式来描述...
    99+
    2024-04-02
  • 使用c语言如何输出一个杨辉三角形
    本文章向大家介绍使用c语言如何输出一个杨辉三角形,主要包括使用c语言如何输出一个杨辉三角形的使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。C语言是什么C语言是一门面向过程的、抽象化的通用程序设...
    99+
    2023-06-06
  • 怎么在C语言中实现一个杨氏矩阵与杨辉三角
    这篇文章将为大家详细讲解有关怎么在C语言中实现一个杨氏矩阵与杨辉三角,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C语言是什么C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层...
    99+
    2023-06-15
  • C语言实现打印杨辉三角的方法详细(三种方法)
    目录题目描述问题分析1. 使用数组法(打印直角三角)2. 使用数组法(打印等腰三角)3. 使用公式法(打印等腰三角)网上参考题目描述 打印杨辉三角(前N行) 问题分析 杨辉三角是中国...
    99+
    2024-04-02
  • C语言动态开辟内存详解
    目录1.动态内存管理2.动态开辟内存函数的介绍2.1malloc和free函数2.2calloc函数2.3relloc函数总结1.动态内存管理 我们已经掌握的内存开辟方法,用的最多的...
    99+
    2024-04-02
  • 批处理bat如何实现杨辉三角效果
    这篇文章主要介绍了批处理bat如何实现杨辉三角效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。效果图:代码如下:@echo off&color 0esetlocal...
    99+
    2023-06-08
  • C语言编程动态内存开辟实现升级版通讯录教程示例
    目录前言一、存放联系人信息二、通讯录初始化三、增加联系人四、销毁通讯录后记前言 所谓动态内存开辟的通讯录,就是我需要多少联系人,就给多少联系人,防止给定一个联系人上限,需要增加联系人...
    99+
    2024-04-02
  • C语言如何实现动态内存分配
    今天小编给大家分享一下C语言如何实现动态内存分配的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。C语言动态内存分配的详解1.为...
    99+
    2023-06-16
  • C语言如何实现杨氏矩阵
    本篇内容主要讲解“C语言如何实现杨氏矩阵”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言如何实现杨氏矩阵”吧!题目如下:有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编...
    99+
    2023-07-05
  • C语言动态内存开辟常见问题解决与分析流程
    目录前言一、动态内存错误1.对NULL指针的解引用操作2.对动态开辟空间的越界访问3.使用free释放非动态开辟的空间4.使用free释放动态内存中的一部分5.对同一块动态内存动态开...
    99+
    2024-04-02
  • C语言如何实现动态内存的分配
    这篇文章给大家分享的是有关C语言如何实现动态内存的分配的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。C 程序中,不同数据在内存中分配说明1)全局变量&mdash;&mdash;内存中的静态存储区2...
    99+
    2023-06-22
  • 如何实现C语言负数的存储
    这篇文章主要介绍“如何实现C语言负数的存储”,在日常操作中,相信很多人在如何实现C语言负数的存储问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何实现C语言负数的存储”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-15
  • C语言如何实现动态链表
    今天小编给大家分享一下C语言如何实现动态链表的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。链表是一种物理存储单元上非连续、非...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作