网站建设哪个公司靠谱/aso如何优化
1.二维数组法
比较简单
思路:
每行的中间元素等于其 上一行的元素 加上 上一行减一的元素
#include <stdio.h>
#include <stdlib.h>#define ROW 100 //行
#define COS 100 //列//二维数组
void YHTrile_Twodim(int n, int(*arr)[COS])
{//特殊处理for (int i = 0; i < n; i++){arr[i][0] = 1;arr[i][i] = 1;}for (int i = 0; i < n; i++){for (int j = 0; j <= i; j++){if (i>1 && j != 0 && j != i){arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];}printf("%-5d ",arr[i][j]);}printf("\n");}
}int main()
{int arr[ROW][COS] = { 0 };int n = 0;printf("\n");YHTrile_Twodim(10, arr);system("pause");return 0;
}
2. 一维数组法
比较难思考一点
请看图解:
思路如下:
(1). 对前两个元素初始化为1,前两个数足以打印打印第一行和第二行
(2). 到了第三行 利用这两个数 再在其后 赋予1这个元素
此时数组为 1 1 1 三个元素
再让其 倒数第二个数 等于 其本身 加上 前面一个元素
此时数组为 1 2 1 打印出第三行
(3). 到了第四行 数组为 1 2 1 1 四个元素
再让其 倒数第二个数 等于 其本身 加上 前面一个元素
再让其 倒数第三个数 等于 其本身 加上 前面一个元素
此时数组为 1 3 3 1
。
。
。
每到下一行都会改变数组的元素,然后再增加1这个元素,利用同一组数不断改变,来实现的!!
根据思路,加上循环就可实现
#include <stdio.h>
#include <stdlib.h>#define ROW 100
#define COS 100 void YHTrile_Onedim(int n, int *arr)
{arr[0] = 1; //第一行printf("%-5d\n", arr[0]);arr[1] = 1; //第二行printf("%-5d%-5d\n", arr[0], arr[1]);for (int i = 2; i < n; i++) //后n-2行{arr[i] = 1; //每行最后一个元素置1for (int j = i - 1; j>0; j--){arr[j] = arr[j - 1] + arr[j];}for (int k = 0; k <= i; k++){printf("%-5d", arr[k]);}printf("\n");}
}int main()
{int arr[ROW*COS] = { 0 };printf("\n");YHTrile_Onedim(10, arr);system("pause");return 0;
}