CSES – Removing Digits

記憶化遞迴

#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;
}

相關文章

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *