c语言杨辉三角找某一个数
时间: 2024-10-29 07:12:03 浏览: 12
在C语言中,杨辉三角是一个经典的动态规划问题,用于展示二项式系数的递推关系。杨辉三角的一个常见应用就是计算指定位置的组合数,也就是C(n, k) = n! / (k!(n-k)!), 其中n!表示n的阶乘。
要查找特定位置的数字,通常采用二维数组来存储每一行的值,然后通过递归或者迭代的方式填充数组。下面是一个简单的示例,使用循环结构填充数组并找到某个位置的数值:
```c
#include <stdio.h>
// 定义二维数组存储杨辉三角
int pascal_triangle(int rows, int** triangle) {
triangle[0][0] = 1;
for (int i = 1; i < rows; i++) {
triangle[i][0] = triangle[i - 1][i - 1];
for (int j = 1; j < i; j++) {
triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
}
triangle[i][i] = 1; // 保证对角线元素为1
}
return triangle;
}
int find_number(int row, int col, int** triangle) {
if (row >= 0 && col >= 0 && row < col) {
return triangle[row][col];
} else {
printf("错误:索引超出范围\n");
return -1;
}
}
int main() {
int rows;
printf("请输入杨辉三角的行数: ");
scanf("%d", &rows);
int** triangle = (int**)malloc(rows * sizeof(int*));
for (int i = 0; i < rows; i++) {
triangle[i] = (int*)malloc(rows * sizeof(int));
}
int target_row, target_col;
printf("请输入你要查找的行数和列数: ");
scanf("%d %d", &target_row, &target_col);
triangle = pascal_triangle(rows, triangle);
int number = find_number(target_row, target_col, triangle);
if (number != -1) {
printf("在(%d,%d)的位置的数是:%d\n", target_row, target_col, number);
} else {
free(triangle); // 释放内存
return 0;
}
free(triangle);
return 0;
}
```
在这个程序中,用户需要输入想要查找的杨辉三角的行数、列数,然后会打印出相应位置的数值。如果索引超出范围,会提示错误信息。
阅读全文