下图为杨辉三角,第 i 行有 i 个数,每行的第一个数和最后一个数都是 1。请你观察其他数字,找出规律,并计算出第n行m列的数值。 输入描述 输入整数 n(1≤n≤30)和m(1<m<n)。 输出描述 输出第 n 行第m列的数值。c++
时间: 2024-09-28 16:08:50 浏览: 39
用Python输出一个杨辉三角的例子
杨辉三角是一个经典的组合数学问题,每个位置的值由其上一位置的两个值相加得到。对于第 n 行的第 m 列,你可以使用动态规划的方式来计算:
1. 对于每一行,第一个和最后一个元素始终是 1。
2. 如果 m 等于 1 或者 n,那么直接返回 1,因为它们分别对应行首和行尾的 1。
3. 对于其他位置 (i, j),其中 i > 1 且 j < i,其值等于第 i - 1 行的第 j 和第 j + 1 列之和。
在 C++ 中,你可以用以下代码实现这个计算:
```cpp
#include <iostream>
int getNumber(int n, int m) {
if (m == 1 || m == n) return 1; // 边界条件
else {
int triangle[n][n]; // 初始化一个 n×n 的二维数组
for (int i = 0; i < n; ++i) {
triangle[i][0] = triangle[i][i] = 1;
for (int j = 1; j < i; ++j)
triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
}
return triangle[n - 1][m - 1]; // 返回第 n 行第 m 列的值
}
}
int main() {
int n, m;
std::cin >> n >> m;
int result = getNumber(n, m);
std::cout << "第 " << n << " 行第 " << m << " 列的值是: " << result << std::endl;
return 0;
}
```
阅读全文