免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234
最近访问板块 发新帖
楼主: dbcat

[算法] 请教大家一个算法题目 。 [复制链接]

论坛徽章:
0
发表于 2006-01-19 20:57 |显示全部楼层
很明显
是动态规划

论坛徽章:
0
发表于 2006-01-20 09:33 |显示全部楼层
Excelent!
谢谢各位高手的耐心解答,我又从中学到了不少东西 。
再次向各位致敬

论坛徽章:
0
发表于 2006-01-25 16:53 |显示全部楼层
学习ing  !!!!

论坛徽章:
0
发表于 2006-01-25 22:52 |显示全部楼层
dp...
记录到当前位置的最大值和最小值就可以了

论坛徽章:
0
发表于 2006-11-15 00:54 |显示全部楼层
我写的一个
#include<stdio.h>
#define SIZE 5
main ()
{
  int max = 0; //记录最大值
  int i;
  int m = 0;//m用来记录出现的第一个非负数的位置
  int k = 0;//k用来记录出现的第一个负数的位置
  int this = 1;//this记录当前积的大小
  int j = 1;//j控制k只记录第一个负数的位置
  int A[SIZE] = {-1,-2,-3,-4,-5 };
  for (i = 0; i < SIZE; i++)
    {
      if (A[i] == 0)//如果遇到0,this重新开始
        {
          j = 1;
          m = i + 1;
          this = 1;
          continue;
        }
      if (A[i] < 0 && j)//j在这里控制k只记录第一个负数的位置
        {
          k = i;
          j = 0;
        }
      this *= A[i];
    max = this > max ? this : max;
    }
  for (i = m; i <= k; i++)
    this /= A[i];
  max = this > max ? this : max;
  printf ("Max=%d\n", max);
}

论坛徽章:
0
发表于 2008-05-28 17:33 |显示全部楼层
Code还是有Bug,没有考虑到0的问题
动态规划,应该是MSRA的面试题

论坛徽章:
0
发表于 2008-05-28 17:57 |显示全部楼层
牛B啊
自惭形秽啊
亏得自己还是科班出身

论坛徽章:
0
发表于 2008-05-28 18:09 |显示全部楼层
原帖由 emacsnw 于 2006-1-19 14:41 发表


这位兄弟说的对,上次因为有点事情急着走了,贴了代码没来得及仔细解释一下。btw,我这段小程序能够通过上面几位的数据测试。

这个问题其实可以简化成这样:数组中找一个子序列,使得它的乘积最大;同时 ...



哥,你是咋想到的啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP