题目:http://wikioi.com/problem/1017/
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
namespace Multi
{
const int N = 25;
int n,k,ans;
char str[N];
bool vis[N];
void Cal()
{
int sum = 1;
int tmp = 0;
for(int i=0;i<n;i++)
{
if(!vis[i])
tmp = tmp * 10 + str[i] - '0';
else
{
sum *= tmp;
tmp = str[i] - '0';
}
}
sum *= tmp;
if(sum > ans) ans = sum;
}
void dfs(int id,int len)
{
if(len == k)
{
Cal();
return;
}
for(int i=id;i<n;i++)
{
if(!vis[i])
{
vis[i] = true;
dfs(i,len+1);
vis[i] = false;
}
}
}
void Import()
{
scanf("%d%d",&n,&k);
memset(vis,false,sizeof(vis));
scanf("%s",str);
}
void Work()
{
ans = 0;
dfs(0,0);
}
void Export()
{
printf("%d\n",ans);
}
}
int main()
{
Multi::Import();
Multi::Work();
Multi::Export();
return 0;
}