zoukankan      html  css  js  c++  java
  • 杨辉三角形

    这类题目,一般是求第n行长啥样,也有求从第一行打印到第n行的

    此处,只做了第n行长啥样

    #include<stdio.h>
    #include<string.h>
    //求 杨辉三角形的第n行长啥样
    
    int a[34];
    int b[34];
    
    int main(){
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        a[1] = 1;
        a[2] = 1;
        b[1] = 1;
        int n;
        scanf("%d",&n);
        for(int i = 3;i <= n;i++){
            for(int j = 2; j <= i-1;j++){
                b[j] = a[j - 1] + a[j];
            }
            b[i] = 1;
            for(int x = 1; x <= i;x++){
                a[x] = b[x];
            }
        }
        for(int i = 1;i <= n;i++)
            if(i == 1)
                printf("%d",a[i]);
            else
                printf(" %d",a[i]);
        return 0;
    }

    思路:

    需要两个数组a,b,先将a[1] = 1;a[2] = 1
    再求第n行数组长啥样时,可以先以a为基础,计算b的值,然后将b复制进a

    由上图的连线可以知道:

    for(int j = 2; j <= i-1;j++){
                b[j] = a[j - 1] + a[j];
            }
            b[i] = 1;

    每一个新派生的行,第一位和最后一位是1,可以从第2位开始,往后到第n-1位遍历构建

    然后外层套个大循环,由3到n不断遍历构建即可

  • 相关阅读:
    私有 composer 包创建
    随机数是如何生成的
    TCP 三次握手的意义
    何为真何为假
    Python流程控制语句详解
    Python类中装饰器classmethod,staticmethod,property,
    函数进阶
    初识函数
    文件操作
    is ==小数据池编码解码
  • 原文地址:https://www.cnblogs.com/expedition/p/12002972.html
Copyright © 2011-2022 走看看