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
