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\n",init(n)); 16 return 0; 17 }
若有不足之处请见谅!!!
纵使单枪匹马,也要勇闯天涯