首页 > 试题广场 >

杨辉三角

[编程题]杨辉三角
  • 热度指数:1142 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}杨辉三角形,又称帕斯卡三角形,第 i+1 行是二项式展开 (a+b)^i 的系数。
\hspace{15pt}三角形中任意元素等于上一行同列元素与上一行前一列元素之和。
\hspace{15pt}下面给出杨辉三角形的前 4 行:

\begin{matrix}<br />1\\<br />1 & 1\\<br />1 & 2 & 1\\<br />1 & 3 & 3 & 1<br />\end{matrix}

\hspace{15pt}给定正整数 n,请输出杨辉三角形的前 n 行。

输入描述:
\hspace{15pt}在一行输入一个整数 n \left(1 \leqq n \leqq 34\right)


输出描述:
\hspace{15pt}输出杨辉三角形的前 n 行。每一行从该行第一个元素开始,依次输出;每两个数之间用一个空格分隔。请不要在行末输出多余的空格。
示例1

输入

4

输出

1
1 1
1 2 1
1 3 3 1

说明

n=4 时,杨辉三角形的前 4 行如上所示。
示例2

输入

1

输出

1

说明

n=1 时,杨辉三角形只有第 1 行,元素为 1
n = int(input())
##创建一个二维数组
yh = [[0]*n for _ in range(n)]
for i in range(n):
    for j in range(i+1):
        if j == 0&nbs***bsp;j == i:
            yh[i][j] = 1
        else:
            yh[i][j] = yh[i-1][j-1] + yh[i-1][j]
##打印,只需要打印下三角的数值,上三角的0不打印。
for i in range(n):
    print(' '.join(map(str,yh[i][:i+1])))

发表于 2025-07-09 17:44:47 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int n = in.nextInt();
            int[][] Matrix = new int[n][n];
            Matrix[0][0] = 1;
            System.out.printf("%d ",Matrix[0][0]);
            System.out.printf("%n");
            for(int i = 1;i < n;i++)
            {
                for(int j = 0;j <= i;j++)
                {
                    if(j == 0){
                        Matrix[i][j] = 1;
                        System.out.printf("%d ",Matrix[i][j]);
                    }else{
                        Matrix[i][j] = Matrix[i - 1][j - 1] + Matrix[i - 1][j];
                        System.out.printf("%d ",Matrix[i][j]);
                    }
                   
                }
                System.out.printf("%n");
            }
        }
    }
}
发表于 2025-07-08 15:44:31 回复(0)
n = int(input())

prev_row = []
for i in range(n):
    row = [1] * (i + 1)
    for j in range(1, i):
        row[j] = prev_row[j-1] + prev_row[j]
    print(' '.join(map(str, row)))
    prev_row = row

发表于 2025-07-07 18:17:03 回复(0)
n = int(input())
row = [1, 1]
for i in range(n):
    if i==0:
        print("1")
    elif i==1:
        print("1 1")
    else:
        row = [row[i]+row[i+1] for i in range(i-1)]
        row.append(1)
        row.insert(0, 1)
        print(*row,sep=" ")

发表于 2025-06-18 20:53:44 回复(0)
n = int(input())

def generate_triangle(n):
    triangular = []
    for i in range(n):
        # 生成n行均为1的矩阵
        row = [1] * (i+1)
        for j in range(1,i):
            # 从1开始,对每一行的第二个数进行求值
            row[j] = triangular[i-1][j]+triangular[i-1][j-1]
        # 当i为0和1的时候,不会进行最近这个for运行,之间保存前两列的矩阵数据
        triangular.append(row)
    return triangular

triangular = generate_triangle(n)

# 按照每行打印杨辉三角
for row in triangular:
    print(" ".join(map(str, row)))

发表于 2025-06-07 23:11:24 回复(0)
import sys

n=int(input())

matrix=[[0 for _ in range(n)] for _ in range(n)]
matrix[0][0]=1
for i in range(1,n):
for j in range(i+1):
if j ==0:
matrix[i][j]=1
else:
matrix[i][j]=matrix[i-1][j-1]+matrix[i-1][j]

for i in range(0,n):
for j in range(i+1):
print(matrix[i][j],end=" ")
print()
发表于 2025-06-05 14:59:41 回复(0)
n = int(input())

last_line = []
for i in range(n):
    if i == 0:
        print(1)
    elif i == 1:
        print(1, 1)
        last_line=[1, 1]
    else:
        line = []
        for j in range(i+1):
            if j == 0:
                line.append(1)
            elif j == len(last_line):
                line.append(1)
            else:
                line.append(last_line[j-1] + last_line[j])
        last_line = line
        print(' '.join([str(v) for v in line]))

发表于 2025-05-29 14:06:17 回复(0)

问题信息

难度:
7条回答 288浏览

热门推荐

通过挑战的用户

查看代码
杨辉三角