zoukankan      html  css  js  c++  java
  • 搜索——[HAOI2012]添加号

    题目:[HAOI2012]添加号  

    描述:

    【题目描述】

    有一个由数字1,2,…9组成的数字串(长度不超过8),问如何将M(M<=5)个加号"+"插入到这个数字串中,使所形成的算术表达式的值最小。请编一个程序解决这个问题。

    注意:

    加号不能加在数字串的最前面或最末尾,也不应有两个或两个以上的加号相邻。

    M保证小于数字串的长度。

    例如:数字串79846,若需要加入两个加号,则最佳方案为79+8+46,算术表达式的值133。

    【输入格式】

    第一行是一个数字串(数字串中间无空格),第二行是一个正整数M。

    【输出格式】

    所求得的最小和的精确值。

    【样例输入】

    79846
    2
    

    【样例输出】

    133

    【提示】

    全部数据:数字串长度不超过8,M<=7。

    30%的数据M=1。

    50%数据M<=2。

    【来源】

    2012年河南省青少年信息学(计算机)奥林匹克赛竞赛(初中组)

    此题太水了,直接深搜一遍过,不带剪枝和优化,数据太小了……另外吐槽一下Pascal的过程太坑了,变量必须要清零,让我调了两分钟……

    AC代码:

    {

    program zht;
    var
    i,ans,m,c:longint;
    a:array[0..100] of longint;
    s:array[0..100] of 0..1;
    z:ansistring;
    
    function min(a,b:longint):longint;
    begin
    if a<b then min:=a else min:=b;
    end;
    
    procedure work;
    var
    h,k,l:longint;
    begin
    
    
    l:=0;
    h:=0;
    for k:=1 to length(z) do
    begin
    l:=l*10+a[k];
    if s[k]=1 then begin h:=h+l; l:=0; end;
    end;
    h:=h+l;
    ans:=min(ans,h);
    end;
    
    procedure find;
    var
    k:longint;
    begin
    if c=m then begin work; exit; end;
    for k:=1 to length(z)-1 do
     begin
     if s[k]=0 then begin s[k]:=1; inc(c); find; dec(c);
                     s[k]:=0; end;
     end;
    end;
    
    begin
    assign(input,'purasu.in');
    assign(output,'purasu.out');
    reset(input);
    rewrite(output);
    
    readln(z);
    
    for i:=1 to length(z) do
    a[i]:=ord(z[i])-48;
    readln(m);
    
    c:=0;
    ans:=maxlongint;
    fillchar(s,sizeof(s),0);
    
    find;
    
    writeln(ans);
    close(input);
    close(output);
    end.
    }

    <Marvolo原创,严禁转载>
  • 相关阅读:
    XMPP框架 微信项目开发之XMPP配置——MySQL数据库、MySQLworkbench、Openfire服务器的安装与配置
    Mac Mysql 启动关闭和重启命令、重新设置root密码 、 卸载
    CocoaPods安装使用 关键点
    CocoaPods的介绍、安装、使用和原理
    iOS 组件化架构漫谈
    将自己库添加Cocoapods支持
    Appium移动端自动化测试-安卓真机+模拟器启动
    Java学习第二十五天
    Java学习第二十四天
    Java学习第二十三天
  • 原文地址:https://www.cnblogs.com/zhtjtcz/p/5033657.html
Copyright © 2011-2022 走看看