首页 > 其他分享 >杨辉三角

杨辉三角

时间:2023-04-05 12:11:21浏览次数:30  
标签:int long 杨辉三角 源代码 col row

杨辉三角

题目描述

本题为代码补全填空题,请将题目中给出的源代码补全,并复制到右侧代码框中,选择对应的编译语言(C/Java)后进行提交。若题目中给出的源代码语言不唯一,则只需选择其一进行补全提交即可。复制后需将源代码中填空部分的下划线删掉,填上你的答案。提交后若未能通过,除考虑填空部分出错外,还需注意是否因在复制后有改动非填空部分产生错误。

杨辉三角也叫帕斯卡三角,在很多数量关系中可以看到,十分重要。

第0行:           1
第1行:          1 1
第2行:         1 2 1
第3行:        1 3 3 1
第4行:       1 4 6 4 1
....

两边的元素都是1, 中间的元素是左上角的元素与右上角的元素和。

我们约定,行号,列号都从 0 计数。所以: 第 6 行的第 2 个元素是 15,第 3 个元素是 20。

直观地看,需要开辟一个二维数组,其实一维数组也可以胜任。 如下程序就是用一维数组“腾挪”的解法。

请仔细分析源码,填写划线部分缺少的内容。

源代码

C

#include <stdio.h>

// 杨辉三角的第row行,第col列 
long long f(int row, int col){
    if(row<2) return 1;
    if(col==0) return 1;
    if(col==row) return 1;
    
    long long a[1024];
    a[0]=1;
    a[1]=1;    
    int p = 2;
    int q;
    
    while(p<=row){
        a[p] = 1;
        for(_________________) a[q] = a[q] + a[q-1]; //填空
        p++;
    }
    
    return a[col];
}


int main()
{
    printf("%d\n", f(6,2));
    printf("%d\n", f(6,3));
    printf("%lld\n", f(40,20));    
    return 0;
}

Java

import java.util.Scanner;
public class Main
{
    // 杨辉三角形的第row行第col列
    static long f(int row, int col){
        if(row<2) return 1;
        if(col==0) return 1;
        if(col==row) return 1;
        
        long[] a = new long[row+1];
        a[0]=1;
        a[1]=1;
        
        int p = 2;
        
        while(p<=row){
            a[p] = 1;
            for( _________________ ) a[q] = a[q] + a[q-1];
            p++;
        }
        
        return a[col];
    }
    
    public static void main(String[] args){
        System.out.println(f(6,2));
        System.out.println(f(6,3));
        System.out.println(f(40,20));
        
    }
}

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

提交答案

#include <stdio.h>

// 杨辉三角的第row行,第col列 
long long f(int row, int col){
    if(row<2) return 1;
    if(col==0) return 1;
    if(col==row) return 1;
    
    long long a[1024];
    a[0]=1;
    a[1]=1;    
    int p = 2;
    int q;
    
    while(p<=row){
        a[p] = 1;
        for(q=p-1;q>0;q--) a[q] = a[q] + a[q-1]; //填空
        p++;
    }
    
    return a[col];
}

int main()
{
    printf("%d\n", f(6,2));
    printf("%d\n", f(6,3));
    printf("%lld\n", f(40,20));    
    return 0;
}

标签:int,long,杨辉三角,源代码,col,row
From: https://www.cnblogs.com/bujidao1128/p/17289104.html

相关文章

  • [安乐椅#15] 杨辉三角质数分布性质
    性质内容在杨辉三角中,质数仅存在于第2层。性质证明\(C_n^m\)\frac{0}12345670|1|2|3|4|5|6|7|......
  • 二维数组-杨辉三角
    输入:5输出:1 11 121 1331 14641 #include<iostream>#include<cstring>usingnamespacestd;intmain(){/*111121133114641*/inta[101][101]={};intn;scanf("%d",&am......
  • 杨辉三角,手动输入行数---Java
    packagepractice.people.apple;importjava.util.Scanner;publicclassYangHui{publicstaticvoidmain(String[]args){ Scannermyscanner=newScanner(Syste......
  • Java入门_二维数组_第二题_杨辉三角
    题目杨辉三角要求使用二维数组打印一个10行的杨辉三角思路第i行输出i个数。arr3[i][j]=arr3[i-1][j]+arr3[i-1][j-1];总结如上规律,代码实现并输......
  • 杨辉三角
    给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例1:输入:numRows=5输出:[[1],[1,1],[1......
  • A0杨辉三角
    publicclassA0{publicstaticvoidmain(String[]args){int[][]a=newint[10][10];for(inti=0;i<10;i++){......
  • 杨辉三角形
    给定一个正整数N,请你输出数在杨辉三角中第一次出现N是在第几个数?思路参考杨辉三角特点:对称性杨辉三角形左右两边数字对称相等。渐增性越往中间数字越大,除......
  • 杨辉三角形
    #include<stdio.h>voidmain(){/*创建时间:2012、9、1;描述:输出杨辉三角11112113311464115......
  • 基本功练习_2_24_2之杨辉三角
    #include<stdio.h>intmain(void){intl;printf("输入行数\n");scanf("%d",&l);intf[100][100]={0};inta,b,c,d,e;for(a=0;a<100;a++){f[a][0]......
  • 杨辉三角
    题目描述:   思路:杨辉三角的特点就是,每行的第一个元素和最后一个元素都是1;其他元素=上一行与当前元素对应位置的元素+ 上一行与当前元素对应位置的元素的前一......