例3.1 数塔问题
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,i,j,a[101][101];
cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
cin>>a[i][j];
for(i=n-1;i>=1;i--)
{
for(j=1;j<=i;j++)
{
if(a[i+1][j]>=a[i+1][j+1]) a[i][j]+=a[i+1][j];
else a[i][j]+=a[i+1][j+1];
}
}
cout<<a[1][1]<<endl;
return 0;
}
例3.2 斐波那契数列(1)
#include<bits/stdc++.h>
using namespace std;
int main()
{
int f0=1,f1=1,f2;
int n;
cin>>n;
for(int i=3;i<=n;++i)
{
f2=f1+f1;
f0=f1;
f1=f2;
}
printf("%d\n",f2);
return 0;
}
例3.3 斐波那契数列(2)
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,i,j,a[101];
cout<<"input n:";
cin>>n;
a[1]=1;a[2]=2;
cout<<"x[1]="<<a[1]<<endl;
cout<<"x[2]="<<a[2]<<endl;
for(i=3;i<=n;i++)
{
a[i]=a[i-1]+a[i-2];
cout<<"x["<<i<<"]="<<a[i]<<endl;
}
return 0;
}
例3.4 昆虫繁殖
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long a[101]={0},b[101]={0},i,j,x,y,z;
cin>>x>>y>>z;
for(i=1;i<=x;i++)
{
a[i]=1;
b[i]=0;
}
for(i=x+1;i<=z+1;i++)
{
b[i]=y*a[i-x];
a[i]=a[i-1]+b[i-2];
}
cout<<a[z+1]<<endl;
return 0;
}
例3.5 位数问题
#include<bits/stdc++.h>
using namespace std;
int main()
{
int f[1001][2],n,i,x;
cin>>n;
f[1][1]=1;
f[1][0]=9;
for(i=2;i<=n;i++)
{
x=f[1][0];
if(i==n)x--;
f[i][0]=(f[i-1][0]*x+f[i-1][1])%12345;
f[i][1]=(f[i-1][1]*x+f[i-1][0])%12345;
}
cout<<f[n][0];
return 0;
}