假期坐在院子里在家晒太阳很舒服,可是又不想让自己闲着(浪费时间啊!),遂找题练练手速。
这题并不难,初中课本都有介绍,但是网上大部分帖子均由二维数组搞定此题,所以想试试运用一维数组解会不会很麻烦,故有了此帖。
事实证明,一维数组解决此题也是很快速方便的。
贴上C++代码:
#include<bits/stdc++.h>
using namespace std;
int vary(int *a,int *b,int k)
{
for(int i=0; i<k-1; i++)
cout<<a[i]<<' ';
cout<<a[k-1]<<endl;
for(int i=1; i<k+1; i++)
a[i]=b[i-1]+b[i];
a[0]=1,a[k+1]=1;
}
int main()
{
int a[50],b[50],n;
while(cin>>n)
{
a[0]=1,b[0]=1,b[1]=1;
for(int j=1; j<=n; j++)
if(j%2==1) vary(a,b,j);
else vary(b,a,j);
cout<<endl;
}
return 0;
}
有点强迫症,主函数必须简洁,但是这里的if判断语句很碍眼,自己也并没有想到什么不画蛇添足的方法使代码更加简洁......