AcWing 1026. 乘积最大
原题链接
简单
作者:
sy123
,
2021-01-27 12:13:31
,
所有人可见
,
阅读 349
#include<bits/stdc++.h>
using namespace std;
int n,k;
string a;
int ans=0;//记录最大值
int cnt=0;
int path[100];
int check(){
vector<int>s;
for(int i=0;i<n;){
int x=0;
x=x*10+(a[i]-'0');
int j=i+1;
while(j<n&&path[j]==0)x=x*10+(a[j]-'0'),j++;
s.push_back(x);
i=j;
}
int sum=1;
for(int i=0;i<s.size();i++){
sum*=s[i];
}
return sum;
}
void dfs(){
int t=check();
if(cnt>k)return;
if(cnt==k){
ans=max(ans,t);
return;
}
for(int i=1;i<n;i++){
if(!path[i]){
path[i]=1;
cnt++;
dfs();
path[i]=0;
cnt--;
}
}
}
int main(){
cin>>n>>k;
cin>>a;
dfs();
cout<<ans<<endl;
}