http://acm.zjut.edu.cn/ShowProblem.aspx?ShowID=1197
完全是控制空格的输出,真的。
代码如下:
#include <stdio.h>
int main()
{
int n;
int a[11][11];
int i;
int j;
int k;
int ini;
int p;
int flag;
//freopen("a.txt","r",stdin);
while(scanf("%d", &n) != EOF)
{
if(n == 1)
{
printf(" 1\n");
}
else
{
for(i = 1; i <= n; i++)
{
a[i][0] = 1;
}
for(i = 1; i <= n; i++)
{
a[0][i] = 1;
}
for(k = 2; k <= n; k++)
{
for(i = 1; i <= n; i++)
{
for(j = 1; j <= n; j++)
{
if(i + j == k)
{
a[i][j] = a[i][j - 1] + a[i - 1][j];
}
}
}
}
ini = 2;
for(k = n - 1; k >= 0; k--)
{
flag = 0;
for(i = 0; i <= n; i++)
{
for(j = 0; j <= n; j++)
{
if(i + j == k)
{
if(flag == 0)
{
for(p = 0; p < ini; p++)
{
printf(" ");
}
}
else
{
if(a[i][j] > 99)
{
for(p = 0; p < 3; p++)
{
printf(" ");
}
}
else if(a[i][j] > 9)
{
for(p = 0; p < 4; p++)
{
printf(" ");
}
}
else
{
for(p = 0; p < 5; p++)
{
printf(" ");
}
}
}
flag = 1;
if(i == 0 && j == 0)
{
a[i][j] = 1;
}
printf("%d", a[i][j]);
}
}
}
ini += 3;
printf("\n");
}
}
}
// while(1);
return 0;
}