千家信息网

C语言怎么实现杨辉三角

发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,本篇内容介绍了"C语言怎么实现杨辉三角"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!杨辉三角--C语
千家信息网最后更新 2024年11月14日C语言怎么实现杨辉三角

本篇内容介绍了"C语言怎么实现杨辉三角"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

杨辉三角--C语言实现

杨辉三角:

在屏幕上打印杨辉三角。

1

1 1

1 2 1

1 3 3 1

……

根据上述例子可知:

1.每一行的第一个和第二个数为1;

2.其余的数为正上方和左边数字之和。

方法一:利用二维数组实现

解题思路:

根据杨辉三角的规律,我们可以定义一个二维数组来实现杨辉三角的打印,其中数字的规律为:

data[i][j] = data[i - 1][j] + data[i - 1][j - 1],所以我们按照这个方法将数据填入二维数组之后打印即可。

代码如下:

#include  int main(){        int n;        int data[30][30] = {1};//将第一行直接填好,为1        printf("请输入要打印的行数:>");        scanf("%d", &n);        for (int i = 1; i < n; i++)//从第二行开始填        {                data[i][0] = 1;//将每一行第一列先初始化为1,防止越界                for (int j = 1; j < i + 1; j++)                {                        data[i][j] = data[i - 1][j] + data[i - 1][j - 1];                }        }        for (int i = 0; i < n; i++)//打印二维数组        {                for (int j = 0; j < i + 1; j++)                {                        printf("%d ", data[i][j]);                }                printf("\n");        }        return 0;}

运行结果:

方法二(对方法一的改进):

由于我在填第n行的杨辉三角时,只跟第n-1行的杨辉三角产生联系,不会跟之前的有联系,所以没必要保存每一行的杨辉三角,利用一维数组,填一行打一行即可,这样能让空间复杂度从O(n^2)降低到O(n)。但是在填数据的时候不能对之前的数据覆盖,所以需要从后向前填。而填杨辉三角顺序对结果是没有影响的,所以可以实现。

代码如下:

#include  int main(){        int n;        int data[30] = { 1 };        printf("请输入要打印的行数:>");        scanf("%d", &n);        printf("1\n");//直接打印第一行        for (int i = 1; i < n; i++)//从第二行开始        {                for (int j = i; j > 0; j--)//从后往前填,避免上一行的数据在使用前就被覆盖                {                        data[j] += data[j - 1];                }                for (int j = 0; j <= i; j++)                {                        printf("%d ", data[j]);                }                printf("\n");        }        return 0;}

运行结果:

"C语言怎么实现杨辉三角"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

0