竞赛真题:杨辉三角形

        大家好鸭~今天继续给大家带来竞赛真题:杨辉三角形。

介绍:

       杨辉三角形,又称为帕斯卡三角形,是一种数学形式,由数字三角形组成,其特点是每个数字是其上面两个数字的和。杨辉三角形的第一行只有一个数字 1,从第二行开始,每一行的首尾数字也是 1,而其余数字是上一行相邻两个数字之和。下面就是一个杨辉三角形示例:

   1
  1 1
 1 2 1
1 3 3 1

题目:

        给出一个整数N,要求输出N层的杨辉三角形。

题目:

       我们可以用嵌套数组来实现(严格来说不能说成是二维数组),首先将第一层直接赋值为{1},第二层赋值为{1, 1},后面N-2步,首先将此层的前后两个数赋值成1,中间夹着的所有数字都取上一层与之对应的两个数字相加的和为值。

Python代码:

AC代码:

def generate_pascal_triangle(numRows):
    triangle = []
    for i in range(numRows):
        row = [1] * (i+1)
        for j in range(1, i):
            row[j] = triangle[i-1][j-1] + triangle[i-1][j]
        triangle.append(row)
    return triangle

# 输出前10行杨辉三角形
triangle = generate_pascal_triangle(10)
for row in triangle:
    print(row)

C++代码:

AC代码

#include <iostream>
#include <vector>

using namespace std;

vector<vector<int>> generate_pascal_triangle(int numRows) {
    vector<vector<int>> triangle;
    for (int i = 0; i < numRows; i++) {
        vector<int> row(i+1, 1);
        for (int j = 1; j < i; j++) {
            row[j] = triangle[i-1][j-1] + triangle[i-1][j];
        }
        triangle.push_back(row);
    }
    return triangle;
}

int main() {
    // 输出前10行杨辉三角形
    vector<vector<int>> triangle = generate_pascal_triangle(10);
    for (auto row : triangle) {
        for (auto element : row) {
            cout << element << " ";
        }
        cout << endl;
    }
    return 0;
}

C代码:

AC代码

#include <stdio.h>

void insertion_sort(int arr[], int n) {
    for (int i = 1; i < n; i++) {
        int key = arr[i];
        int j = i - 1;
        while (j >= 0 && arr[j] > key) {
            arr[j+1] = arr[j];
            j = j - 1;
        }
        arr[j+1] = key;
    }
}

int main() {
    int arr[] = {5, 2, 4, 6, 1, 3};
    int n = sizeof(arr) / sizeof(arr[0]);
    insertion_sort(arr, n);
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}

Java代码:

import java.util.Arrays;

public class InsertionSort {
    public static void insertionSort(int[] arr) {
        for (int i = 1; i < arr.length; i++) {
            int key = arr[i];
            int j = i - 1;
            while (j >= 0 && arr[j] > key) {
                arr[j+1] = arr[j];
                j = j - 1;
            }
            arr[j+1] = key;
        }
    }
    
    public static void main(String[] args) {
        int[] arr = {5, 2, 4, 6, 1, 3};
        insertionSort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

JS代码:

AC代码

function generatePascalTriangle(numRows) {
  let triangle = [];
  for (let i = 0; i < numRows; i++) {
    let row = Array(i + 1).fill(1);
    for (let j = 1; j < i; j++) {
      let num = triangle[i-1][j-1] + triangle[i-1][j];
      row[j] = num;
    }
    triangle.push(row);
  }
  return triangle;
}

let triangle = generatePascalTriangle(10);
for (let row of triangle) {
  console.log(row);
}

Go代码:

AC代码:

package main

import "fmt"

func generatePascalTriangle(numRows int) [][]int {
    triangle := make([][]int, numRows)
    for i := 0; i < numRows; i++ {
        row := make([]int, i+1)
        for j := 0; j < i+1; j++ {
            row[j] = 1
        }
        for j := 1; j < i; j++ {
            num := triangle[i-1][j-1] + triangle[i-1][j]
            row[j] = num
        }
        triangle[i] = row
    }
    return triangle
}

func main() {
    triangle := generatePascalTriangle(10)
    for _, row := range triangle {
        fmt.Println(row)
    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值