首页 > ACM题库 > HDU-杭电 > hdu 2032 杨辉三角[解题报告]C++
2013
12-26

hdu 2032 杨辉三角[解题报告]C++

杨辉三角

问题描述 :

还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

输入:

输入数据包含多个测试实例,每个测试实例的输入只包含一个正整数n(1<=n<=30),表示将要输出的杨辉三角的层数。

输出:

输入数据包含多个测试实例,每个测试实例的输入只包含一个正整数n(1<=n<=30),表示将要输出的杨辉三角的层数。

样例输入:

2 3

样例输出:

1
1 1

1
1 1
1 2 1

#include<stdio.h>
#include<string.h>
#define MAX 35
int num[MAX][MAX];
int func(int row,int col)
{
    if(col==0||col==row) num[row][col]=1;
    if(num[row][col]==-1)
        num[row][col]=func(row-1,col-1)+func(row-1,col);
    return num[row][col];
}
int main()
{
    int n;
    memset(num,-1,sizeof(num));
    while(~scanf("%d",&n))
    {
        int i,j;
        for(i=0;i<n;i++)
        {
            for(j=0;j<i;j++)
                printf("%d ",func(i,j));
            printf("%d",func(i,i));
            printf("\n");
        }
        printf("\n");
    }
    return 0;
}

解题转自:http://www.cnblogs.com/yuris115/p/3355650.html


  1. [email protected]

  2. #include <cstdio>
    #include <cstring>

    const int MAXSIZE=256;
    //char store[MAXSIZE];
    char str1[MAXSIZE];
    /*
    void init(char *store) {
    int i;
    store['A']=’V', store['B']=’W',store['C']=’X',store['D']=’Y',store['E']=’Z';
    for(i=’F';i<=’Z';++i) store =i-5;
    }
    */
    int main() {
    //freopen("input.txt","r",stdin);
    //init(store);
    char *p;
    while(fgets(str1,MAXSIZE,stdin) && strcmp(str1,"STARTn")==0) {
    if(p=fgets(str1,MAXSIZE,stdin)) {
    for(;*p;++p) {
    //*p=store[*p]
    if(*p<’A’ || *p>’Z') continue;
    if(*p>’E') *p=*p-5;
    else *p=*p+21;
    }
    printf("%s",str1);
    }
    fgets(str1,MAXSIZE,stdin);
    }
    return 0;
    }