杨辉三角

来源:互联网 发布:mysql.exe常用命令 编辑:程序博客网 时间:2024/06/10 03:27

排版题.输出排列成菱形的字母

Time Limit:1s Memory Limit:1000k
Total Submit:20789 Accepted:3992


Problem

输出杨辉三角

Input

本题有多组测试数据,每组数据仅含一个整数N(N不大于34)。一组数据独占一行。

Output

对于每一组数据,先输出一个

Case #:
其中#号代表第#组数据。接下来输出一个由数字组成的杨辉三角。一行中的数字之间用一个空格分开。行尾不要有多余的空格。
两组数据之间空开一行。  

Sample Input

6 
3

Sample Output

Case 1: 
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

Case 2:
1
1 1
1 2 1

C的求解及答案

#include <stdio.h>
#include <memory.h>
#include <stdlib.h>

int main()
{
    int N, i, j, count;
    int *p, *q;
    count = 1;
    while(scanf("%d", &N) > 0){
        p = (int*)malloc((N + 1) * sizeof(int));
        q = (int*)malloc((N + 1) * sizeof(int));

        memset(p, 0, (N + 1) * sizeof(int));
        memset(q, 0, (N + 1) * sizeof(int));
        q[0] = p[0] = 1;
        if(count > 1) putchar('/n');
        printf("Case %d:/n1/n", count++);
        for(i = 1; i < N; i++){
            putchar('1');
            for(j = 1; j <= i; j++){
                q[j] = p[j] + p[j-1];
                printf(" %d", q[j]);
            }
            memcpy(p, q, (N + 1) * sizeof(int));
            putchar('/n');
        }

        free(q);
        free(p);
    }
    return 0;
}

Memory: 32K
Time: 0ms