新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> We choose to study algorithmic problems,  not because they are easy,  but because they are hard.
    [返回] 计算机科学论坛计算机理论与工程『 算法理论与分析 』 → 关于一道动态规划的编程题 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 6488 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 关于一道动态规划的编程题 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     watchingsky 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:0
      积分:53
      门派:XML.ORG.CN
      注册:2007/8/20

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给watchingsky发送一个短消息 把watchingsky加入好友 查看watchingsky的个人资料 搜索watchingsky在『 算法理论与分析 』的所有贴子 引用回复这个贴子 回复这个贴子 查看watchingsky的博客楼主
    发贴心情 关于一道动态规划的编程题

    最近在看动态规划的知识,有一道题是这样的
    找出一个数列的子序列,使子序列的各数字之和最大
    例如 数列 5, 15, -30, 10, -5, 40, 10 的最大子序列是 10, -5, 40, 10,它们的和是55。(注,子序列中的数字在原序列中必须是连续的,即如5,15,10这样的序列不是子序列)

    我列出了递推公式如果设S(k)为原序列中从1...k数字的最长子序列,a(k)为k位置上的数(k= 1 ... N)。设数列的长度为N,那么所求的结果为S(N).递推的公式为
    S(j)=max{S(j-1)+a(j),S(j-1)}。

    但是在写程序时遇到了困难,不知道如何将公式转化为程序(应该如何设置数组和循环)。请大家指点,谢谢。


    [此贴子已经被作者于2010-7-30 16:43:31编辑过]

       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2010/7/30 15:56:00
     
     zet809 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:2
      积分:70
      门派:XML.ORG.CN
      注册:2010/5/28

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给zet809发送一个短消息 把zet809加入好友 查看zet809的个人资料 搜索zet809在『 算法理论与分析 』的所有贴子 引用回复这个贴子 回复这个贴子 查看zet809的博客2
    发贴心情 
    for (i = 0; i < queue_size; i++) {
            line_sum = 0;
            for (j = i; j < queue_size; j++) {
                line_sum += queue[j];
                if(line_sum > max_sum) {
                    max_sum = line_sum;                        //和最大值
                    max_sum_start = i;                           //最大值起始位置
                    max_sum_distance = j - i + 1;            //字串长度
                }
            }
        }
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2010/8/20 16:21:00
     
     wmkevin 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:1
      积分:54
      门派:XML.ORG.CN
      注册:2010/11/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给wmkevin发送一个短消息 把wmkevin加入好友 查看wmkevin的个人资料 搜索wmkevin在『 算法理论与分析 』的所有贴子 引用回复这个贴子 回复这个贴子 查看wmkevin的博客3
    发贴心情 
    这个问题我以前看到过~
    你的思路木有问题
    其实对其分情况就可以
    如果累加和出现负数了就把暂时的累加和清空为零,因为负数加后续的数肯定会小于后续的数直接相加,如果是正数,就继续加下去
    即套用你的公式为S(j)=max{S(j-1)+a(j),S(j-1)}
    之前子数列最大和假设为max
    temp=s(j-1)+a(j);
    if(temp<0)sum=0;
    else{if(temp)>max;
    max=temp}
    这样写不知道你是否可以明白呢
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2010/11/21 20:52:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 算法理论与分析 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/15 5:49:42

    本主题贴数3,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    6,910.156ms