第I题 杨辉三角形
题目大意:


解法一:(得20%)
思路:
当指考虑小范围的值时,我们可以直接根据杨辉三角形的规律:第i行第j列的值=第i-1行第j列的值+第i-1行第j-11列的值,来把前50个杨辉三角形的数存入数组中,最后通过一个循环来查找就可以得到20%的分数。
代码如下:
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 10100;
LL dp[N][N];//用来存入杨辉三角形的每一个数
LL sk[N];//记入每个数是第几个数
int s = 1;
int n;
int main() {
cin >> n;
dp[0][0] = 1;
for (int i = 1; i <= 50; i++) {
for (int j = 1; j <= i; j++) {
dp[i][j] = dp[i - 1][j] + dp[i - 1][j - 1];//杨辉三角形的规律
sk[s++] = dp[i][j];
}

这篇博客主要介绍了2021年蓝桥杯B组第一题——杨辉三角形的解题方法。解法一通过直接计算前50个数并存储来获取部分分数,而解法二通过观察杨辉三角形的重复性和单调性,采用二分查找策略来解决,从而获得全部分数。
最低0.47元/天 解锁文章
3470

被折叠的 条评论
为什么被折叠?



