codevs1017
来源:互联网 发布:linux shell有哪几种 编辑:程序博客网 时间:2024/06/05 21:53
题目地址:http://codevs.cn/problem/1017/
分析:
数据比较弱,所以深搜也能轻松AC
代码:
program ex1017;
var n,k,i:integer;
t,ans:int64;
a:array[1..40] of char;
function s(sta,en:integer):int64;//这个函数用来计算从第sta到第en位的数字
var i:integer;
st:string;
begin
st:='';
for i:=sta+1 to en do
st:=st+a[i];
val(st,s);
end;
procedure search(num,l:integer);//num代表放第几个乘号,l代表上一个乘号的位置
var i:integer;
j:int64;
begin
if num>k then
begin
j:=s(l,n);
if j<>0 then//如果剩下的数等于0就不用做了,因为乘积总为0
begin
t:=t*j;
if t>ans then
ans:=t;
t:=t div j;//这里也要回溯一下
end;
end
else
begin
for i:=l+1 to n-k+num do//该乘号能放的位置
begin
j:=s(l,i);
if j<>0 then
begin
t:=t*j;//保存当前结果
search(num+1,i);//深搜下一层
t:=t div j;//回溯
end;
end;
end;
end;
begin
readln(n,k);
for i:=1 to n do
read(a[i]);//每个数字都以字符形式读入
ans:=0;//最终结果
t:=1;//打擂台用的临时量
search(1,0);//放第一个乘号,假设上一个乘号放在0位置(其实没有上一个乘号)
writeln(ans);
end.
- codevs1017
- codevs1017 乘积最大(dp)
- 乘积最大codevs1017(noip2000)
- 【NOIP2000TG/codevs1017】 乘积最大 解题报告
- codevs1017 乘积最大 dfs 也可以dp
- 【日常学习】【划分DP】codevs1017 乘积最大题解
- POJ1651 Codevs1017 乘积最大 ---2000年NOIP全国联赛提高组 dp
- 学习笔记:codevs1017[划分dp] 调了一天发现没初始化
- 可见度和方法
- 【android安全】保护app本地数据文件
- JSP
- 设计模式之简单工厂模式
- 大数据生态
- codevs1017
- 整数变换问题
- Andorid学习笔记
- Java复习笔记
- 照片的基本处理
- Network:测试socket发送结构体
- codevs1018
- Android View深入学习(一),View的测量(Measure)过程
- 三层架构中 工厂模式和单例模式的使用