codeforces #549 div2 B

题意::

  输入一个数n,找出1->n中各位上的数的乘积最大值

思路::

  要求这个最大值,显然是9肯定比较好但并不最优因为还要兼顾其他位上的数,例 27 (显然27比19要更优)

  那就应该决策一下哪种是最优的

     init(t)表示t的各位数乘积

     1 init (n/10-1)*9

     2)(n%10)*init(n/10);

  详情见代码::

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define ll long long
 4 const int maxn=1e5+5;
 5 int ma[maxn];
 6 int init(int x)
 7 {
 8     if(x<10){return max(1,x);}
 9     return max(x%10*init(x/10),init(x/10-1)*9);
10 }
11 int main()
12 {
13     int n;
14     scanf("%d",&n);
15     printf("%d
",init(n));
16     return 0;
17 }

若有不足之处请见谅!!!

纵使单枪匹马,也要勇闯天涯
原文地址:https://www.cnblogs.com/sj-gank/p/11468122.html