
記憶化遞迴
#include<bits/stdc++.h>
#define int long long
#define pii pair<int,int>
#define f first
#define s second
#define fastio ios_base::sync_with_stdio(0);cin.tie(0)
using namespace std;
//declare
const int maxn = 1e6+5;
int n,dp[maxn];
//
int solve(int x){
if(dp[x] != 1e18) return dp[x];
for(int i=x;i>0;i/=10){
if(i%10 == 0) continue;
dp[x] = min(dp[x], solve(x - i%10) + 1);
}
return dp[x];
}
signed main(){
fastio;
cin>>n;
dp[0] = 0;
for(int i=1;i<=9;i++) dp[i] = 1;
for(int i=10;i<=n;i++) dp[i] = 1e18;
cout<<solve(n)<<"\n";
return 0;
}

發佈留言