大家好鸭~今天继续给大家带来竞赛真题:杨辉三角形。
介绍:
杨辉三角形,又称为帕斯卡三角形,是一种数学形式,由数字三角形组成,其特点是每个数字是其上面两个数字的和。杨辉三角形的第一行只有一个数字 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)
}
}