网站被k什么意思,公众号模板网站,企业信用报告网上查询,易班网站建设的意义目录 一#xff1a;题目
二#xff1a;思路分析
三#xff1a;代码 一#xff1a;题目 二#xff1a;思路分析
1.通过杨辉三角#xff0c;不难发现中间的数等于肩头两个数之和 2.但是当我们的输出结果#xff0c;与杨辉三角的形式有所不同#xff0c;但是我们可以找…
目录 一题目
二思路分析
三代码 一题目 二思路分析
1.通过杨辉三角不难发现中间的数等于肩头两个数之和 2.但是当我们的输出结果与杨辉三角的形式有所不同但是我们可以找到与杨辉三角相似的规律即一个数等于上面的数和上面数的右边的的数的和arr[i][j] arr[i-1][j]arr[i-1][j-1] 3.这是又出现一个问题如何用代码实现呢我们只是找到了规律但是如何应用规律呢我们怎么赋值呢
不难看出第一列和最后一个数都是1那我们要把这两种情况单独拿出来讨论将它们赋值为1吗
这稍微有一点麻烦。
这时不妨看一下我对杨辉三角第一行和第二行的理解将它们理解为第一行的两边还有一个未显示的0第二行的1是由第一行的10得到的同理假设我们求的是五行杨辉三角那么第二行的1是由第一行的1和它右边的0相加得到的但是如果求五行我们创建的是5*5的二维数组的话第一行的1是第一行开始的数如果访问它右边的数就越界了所以这是不妨扩建数组为6*6的。 在这个基础上我们只要把1,1处的值赋为1再带入我们找到的规律就可以得到结果了 4.对于杨辉三角第i行有i个数所以循环时i的范围是1~n,而j的范围是1~i
三代码
#include stdio.h
//2043杨辉三角
int main()
{int n 0;scanf(%d, n);int arr[21][21] { 0 };int i 0, j 0;for (i 1; i n; i)//0~n{for (j 1; j n; j){if (i 1 j 1)arr[i][j] 1;elsearr[i][j] arr[i - 1][j] arr[i - 1][j - 1];}}for (i 1; i n; i){for (j 1; j i; j){printf(%d , arr[i][j]);}printf(\n);}return 0;
}