解题思路:用dp列举所有可能
注意事项:
参考代码:
#include<stdio.h>
#include<string.h>
int a[7];
int number[41];
int book[7];
int n,k;
long long max=0;
int product(int bb[7])
{
int j=1,i,p=1,t;
long long sum=1;
long long s;
t=k;
while(t)
{
s=0;
for(i=j;i<=bb[p];i++)
{
s=s*10+number[i];
}
j=i;
p++;
t--;
sum=s*sum;
}
s=0;
for(i=bb[k]+1;i<=n;i++)
s=s*10+number[i];
return sum*s;
}
//列举出所有乘号的地方
void dfs(int step)
{
int i,flag=1;
long long best;
if(step==k+1)
{
for(i=1;i<=k;i++)
{
if(a[i-1]>a[i])
{
flag=0;
break;
}
}
if(flag)
{
best=product(a);
if(best>max)
max=best;
}
return;
}
for(i=1;i<=n-1;i++)
{
if(book[i]==0)
{
a[step]=i;
book[i]=1;
dfs(step+1);
book[i]=0;
}
}
return;
}
int main()
{
int i,sz;
char str[41];
scanf("%d %d",&n,&k);
scanf("%s",&str);
for(i=0;i<n;i++)
number[i+1]=str[i]-'0';
//for(i=1;i<=n;i++)
// printf("%d ",number[i]);
dfs(1);
printf("%d\n",max);
return 0;
}
0.0分
0 人评分
【绝对值排序】 (C语言代码)浏览:481 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:560 |
C语言程序设计教程(第三版)课后习题8.9 (C++代码)浏览:844 |
C二级辅导-求偶数和 (C语言代码)浏览:603 |
川哥的吩咐 (C语言代码)浏览:872 |
汽水瓶 (C语言代码)浏览:698 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:552 |
C二级辅导-进制转换 (C语言代码)浏览:615 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:1432 |
P1001 (C语言代码)浏览:800 |