这是贪心
我们想要尽量把每一位变成9,然后每次都向前借一位来减,所以每次取max(solve(n / 10) * (n % 10), solve((n / 10 - 1) * 9); 若n比10小就返回n,若n为0就返回1;
所以
#include<bits/stdc++.h>
using namespace std;
int solve(int n){
if(n == 0) return 1;
else if(n < 10) return n;
else return max(solve(n / 10) * (n % 10), solve(n / 10 - 1) * 9);
}
int main(){
int n;
scanf("%d", &n);
printf("%d\n", solve(n));
return 0;
}