您的位置:首页 > 其它

FOJ 1208 最大k乘积问题

2008-08-08 10:24 288 查看
设I是一个n位十进制整数。如果将I划分为k段,则可得到k个整数。这k个整数的乘积称为I的一个k乘积。试设计一个算法,对于给定的I和k,求出I的最大k乘积。

对于给定的I和k,编程计算I的最大k乘积。

数据输入
输入文件由多组数据组成。每组数据格式如下:
第1行中有2个正整数n和k。正整数n是序列的长度;正整数k是分割的断数。
接下来的一行中是一个n位十进制整数。(n<=10)

结果输出
对于每组数据,输出计算出的最大k乘积。
输入示例
2 1
15

输出示例
15

Original: FJ CFCS 2005

这题目很好玩的说.......................~~~~~~~~~~

我是用递归做的,不过大牛说我这也算DP了....Orz

说白了我有点暴力求解的意思....

#include <stdio.h>

char num[10];

int len,k;

int get_arr_val(int _start,int _end)

{

int res=0,i;

for(i=_start;i<=_end;i++)

res=res*10+num[i]-'0';

return res;

}

int get_max_val(int _start,int _k)

{

int sum,i,msum=0;

if(_k==1) return get_arr_val(_start,len-1);

for(i=0;i<=len-_start-_k;i++)

{

sum=get_arr_val( _start, _start+i);

sum*=get_max_val(_start+i+1,_k-1);

if(sum>msum) msum=sum;

}

return msum;

}

int main()

{while(scanf("%d%d",&len,&k)!=EOF)

{

getchar();

gets(num);

printf("%d/n",get_max_val(0,k));

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: