杨辉三角

##杨辉三角
还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
Input
输入数据包含多个测试实例,每个测试实例的输入只包含一个正整数n(1<=n<=30),表示将要输出的杨辉三角的层数。
Output
对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。
Sample Input
2 3
Sample Output
1
1 1

1
1 1
1 2 1
问题链接
https://cn.vjudge.net/problem/CodeForces-1A
问题简述

程序说明
通过规律可知,每行第一个(可用公式(k == i * (i - 1) / 2 + 1)和最后一个(k == i * (i - 1) / 2 + i)都是1,且中间的都加上往前对应所在的行数的数字和下一个(比如第三行的2就是它的第前三个1加上第前二个1的和)

#include <iostream>
using namespace std;
int main()
{
	int a[470],n,i,j,k;//定义数组存放杨辉三角的数字
	while (cin >> n)//用while来实现多组数据输入,输入三角的层数
	{
		k = 1;//每输出一个杨辉三角对k再次赋值1
		for (i = 1; i <= n; i++)//判断输出的行数
		{
			for (j = 1; j <= i; j++, k++)/j用来判断每行输出的个数 /k用来判断输出第几个数
			{
				if (k == i * (i - 1) / 2 + 1 || k == i * (i - 1) / 2 + i)//每行第一个和第二个附1
				{
					a[k] = 1; cout << a[k]; 
					if (k == i * (i - 1) / 2 + i) //判断如果是每行最后一个数,换行
				    cout << endl;  
					else cout << " ";
				}
				else { a[k] = a[k - i] + a[k - i + 1]; cout << a[k] << " "; }
			}
			if (i == n)cout << "\n";每完成一个杨辉三角空一行
	       }
          }
}
在这里插入代码片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值