| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 658 人关注过本帖
标题:帮忙解释下
只看楼主 加入收藏
『点点滴滴』
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:168
专家分:1035
注 册:2007-7-9
结帖率:100%
收藏
 问题点数:0 回复次数:2 
帮忙解释下
计算x[1:i]的最大连续邮资区间在本算法中被频繁使用到,因此势必要找到一个高效的方法。考虑到直接递归的求解复杂度太高,用不超过m张面值为x[1:i]的邮票贴出邮资k所需的最少邮票数y[k]。通过y[k]可以很快推出r的值。具体算法如下:
    for (j=0; j<= x[i-2]*(m-1);j++)
         if(y[j]<m)
           for (k=1;k<=m-y[j];k++)
             if (y[j]+k<y[j+x[i-1]*k]) y[j+x[i-1]*k]=y[j]+k;
   while (y[r]<MAXNUM) r++;
  在初始化y[]是都把它赋值为MAXNUM(y[0]=0),其中MAXNUM表足够大的整数

这段代码怎么理解?
搜索更多相关主题的帖子: 解释 算法 
2008-01-08 18:52
yrj007
Rank: 1
等 级:新手上路
帖 子:43
专家分:0
注 册:2007-3-17
收藏
得分:0 
MAXNUM表足够大的整数?
下面的代码也可以实现以上功能
x[i]
y[k]
sum//邮资
k=0;
   for(n=0;n<i;n++)
     {
     for(t=1;t<=m;t++)
     {
     if(t*x[n]=sum)
     y[k++]=t
     else  if(t*x[n]>sum)
     y[k++]=t-1;
     }
     }
     min=y[0]
     for(i=1;i<k;i++)
     if(min>y[k])
     min=y[k];
     printf("%d",min);

2008-01-08 19:38
zhou
Rank: 1
等 级:禁止发言
帖 子:429
专家分:0
注 册:2006-6-16
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2008-03-30 17:42
快速回复:帮忙解释下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011316 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved