问题标题: 酷町堂:5071

0
0

0
已采纳
刘乐宸
刘乐宸
新手天翼
新手天翼

递归

int f(int n,int x){
    if(n==0) return 1;
    int ans=0;
    for(int i=x;i<=3&&i<=n;i++) ans+=f(n-i,i);
    return ans;
}

输出f(N,1)

0
杜承俊
杜承俊
资深守护
资深守护
  • #include<bits/stdc++.h>
  • using namespace std;
  • long long a[100][100]={0};
  • int n;
  • long long f(int n,int t){
  • if(a[n][t]!=-1)return a[n][t];
  • if(n==0)return 1;
  • long long ans=0;
  • for(int i=t;i<=min(3,n);i++)
  • ans+=f(n-i,i);
  • a[n][t]=ans;
  • return ans;
  • }
  • int main(){
  • cin>>n;
  • memset(a,-1,sizeof(a));
  • cout<<f(n,1);
  • }
0
我要回答