求助
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int n;
int f[10000000];
int dfs(int n){
if(n<=0) return 0;
if(n==1) return 1;
if(n==5) return 1;
if(n==11) return 1;
if(f[n]!=-1) return f[n];
if(n<5) f[n]=dfs(n-1)+1;
else if(n>=5 && n<11) f[n]=min (dfs(n-5)+1 , dfs(n-1)+1);
else{
int minn=10000;
int a[3]={dfs(n-1),dfs(n-5),dfs(n-11)};
for(int i=0;i<3;i++){
if(a[i]<minn){
minn=a[i];
}
}
f[n]=minn+1;
}
return f[n];
}
int main() {
cin>>n;
memset(f,-1,sizeof(f));
f[0]=0;
cout<<dfs(n);
return 0;
} ```