#include <iostream>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
int num[1000],i,j,s=1;
num[0]=1;
for(i=1;i<n;++i)
{ num[s++]=1;
for(j=1;j<i;++j)
num[s++]=num[s-i]+num[s-i-1];
//注意找数字规律
num[s++]=1;
}
s=0;
for(i=0;i<n;++i)
{
for(j=0;j<i;++j)
cout<<num[s++]<<" ";
cout<<num[s++]<<endl;
}//要按格式输出
cout<<endl;
}
}
(这串代码能ac但在dev上跑会出现错误)
规律:
从第三行开始,收尾为1,中间的数=上一行两个数的和。
如
1
1 1
1 2 1
1 3 3 1
第四行第一个3=第三行首1+2
第四行第二个3=第三行2+尾1
(所求数向后移时求和的数也向后移了)