杭电oj2032

杭电oj2032

#include<stdio.h>
int main(void)
{
	int a, b, i, j,k;
	int e[35][35];
	while (scanf("%d", &a) != EOF&&a >= 1 && a <= 30)
	{
		e[0][0] = 1;
		e[0][1] = 0;
		printf("%d\n", e[0][0]);
		for (i = 1; i < a; i++)
		{
			for (j = 0; j <= i; j++)
			{
				if (j == 0)
				{
					e[i][j] = e[i - 1][j];
					printf("%d", e[i][j]);
				}
				else
				{
					e[i][j] = e[i - 1][j] + e[i - 1][j - 1];
					printf(" %d", e[i][j]);
				}
				k = j;
			}
			printf("\n");
			e[i][k + 1] = 0;
		}
		printf("\n");
	}
	return 0;
}

第n行的第i个数 = 第n-1行第i个数 + 第n-1行第i-1个数。
然后在最后一个数的后面补一个0,这样可以使下一行的最后一个数为1。