题解:与斐波那契数相似,只不过要多出一项。将n=0代入可得递推公式:T3=T0+T1+T2。
即Tn=T(n-1)+T(n-2)+T(n-3)。
递归:
#include<stdio.h>
int tri(int n)
{
if(n==0)
{
return 0;
}
else if(n<=2)
{
return 1;
}
else
{
return tri(n-1)+tri(n-2)+tri(n-3);
}
}
int main()
{
int n;
int ret;
printf("n=",n);
scanf("%d",&n);
ret=tri(n);
printf("%d",ret);
return 0;
}
动态规划:
#include<stdio.h>
int tri(int n)
{
if(n==0)
{
return 0;
}
if(n<=2)
{
return 1;
}
int a=0;
int b=1;
int c=1;
int d=0;
while(n>2)
{
d=a+b+c;
a=b;
b=c;
c=d;
n--;
}
return d;
}
int main()
{
int n;
int ret;
printf("n=",n);
scanf("%d",&n);
ret=tri(n);
printf("%d",ret);
return 0;
}