ACM倒立杨辉三角形

Fans喜欢图形,而且喜欢把图形倒过来欣赏。有一次,他看见杨辉三角形 了,觉得很新鲜,于是就把它们大大小小地摆布出来。输入一些整数n(1≤n≤10),读入其每个整数,以该整数为行数,其画出来的倒杨辉三角形(每相邻2个数据由一个空格隔开)就是fans所喜欢欣赏的。Fans是手工做的,你却可以用编程更快捷地做出来,多爽啊!
样例输入

5
3

样例输出

1 4 6 4 1
 1 3 3 1
  1 2 1
   1 1
    1
1 2 1
 1 1
  1

解题思路:
首先将杨辉三角形存储到二维数组;
1
11
121
1331
然后倒过来输出,在输出的同时注意题目中要求 每相邻2个数据由一个空格隔开。

代码:

#include<iostream>
using namespace std;
int main()
{
	int n;
	while(cin>>n)
	{
		int a[n][n]={};
		int i,j,k;
		for( i=0;i<n;i++)
		{
			for( j=0;j<=i;j++)
			{
				if(i==j||j==0)
				{
					a[i][j]=1;
				} 
				 else
				 {
				 	a[i][j]=a[i-1][j]+a[i-1][j-1];//杨辉三角形中间的元素是左上角的元素与右上角的元素和
				 }
			}	
		}
		for(i=0;i<n;i++)
		{
			for(j=0;j<i;j++)
				cout<<" ";//输出空格
			for(k=0;k<n-i;k++)
			{
				cout<<a[n-i-1][k];//从最后一行开始输出,即i=0;
				cout<<" ";
			}
			cout<<endl;
		}		
	}
	return 0;
}

你可能感兴趣的:(ACM,c++)