注意
当乘于0的时候回溯我们不能除0,所以我们不要用除回去的操作来回溯,我们直接在进行乘计算之前就用一个temp记录下chengji当前的值,然后回溯的时候让chengji=temp,这样操作就可以避免Float Point Exception(浮点异常)的错误了
代码
#include<iostream>
using namespace std;
int n,k;
char a[14];
long long ans=-1e18;
int cnt;
long long chengji=1;
int num(int l,int r)
{
int res=0;
for(int i=l;i<=r;i++)
{
int temp=a[i]-'0';
res=res*10+temp;
}
return res;
}
void dfs(int x)
{
if(cnt==k)
{
int temp=chengji;
chengji*=num(x,n);
ans=max(ans,chengji);
chengji=temp;
return;
}
for(int i=x;i<=n-k+cnt;i++)
{
int temp=chengji;
chengji*=num(x,i);
cnt++;
dfs(i+1);
chengji=temp;
cnt--;
}
}
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)cin>>a[i];
dfs(1);
cout<<ans;
return 0;
}