题目描述
输入n值,使用递归函数,求杨辉三角形中各个位置上的值。
输入描述:
一个大于等于2的整型数n
输出描述:
题目可能有多组不同的测试数据,对于每组输入数据, 按题目的要求输出相应输入n的杨辉三角形。
输入例子:
6
输出例子:
1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5
AC code:
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<map>
#include<math.h>
#include<string.h>
#include<queue>
#include<vector>
#include<set>
#define LL long long
#define exp 1e-9
#define MAXN 1000010
using namespace std;
/*
int YangHui(int i,int j)
{
if(j==1||j==i)
return 1;
else
return YangHui(i-1,j)+YangHui(i-1,j-1);
}
*/
/*改进版本:记忆化递归,减少递归次数*/
int a[1001][1001];
int YangHui(int i,int j)
{
if(a[i][j]==0)
{
if(i==j||j==1)
a[i][j]=1;
else
{
a[i][j]=YangHui(i-1,j)+YangHui(i-1,j-1);
}
}
return a[i][j];
}
int main()
{
// freopen("D:\\in.txt","r",stdin);
int i,j,n;
memset(a,0,sizeof(a));
while(scanf("%d",&n)!=EOF)
{
for(i=2;i<=n;i++)
{
for(j=1;j<=i-1;j++)
{
printf("%d ",YangHui(i,j));
}
printf("%d\n",YangHui(i,i));
}
}
return 0;
}