OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4618|回复: 2

连续邮资算法

[复制链接]

18

主题

83

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2013-10-17
在线时间
0 小时
发表于 2014-5-29 19:33:08 | 显示全部楼层 |阅读模式
5金钱
void backtrack(int i,int r) 

    
int j,k;                       
    int t[VALUE_LIMIT+1];                     
    
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]<MAXINT)                    //r为邮资上界,这里用邮票数MAXINT构建最大邮资上界
        r++
    
    
if(i>n){                        //如果搜索到叶子节点,更新相应的邮资最优值为r-1
        if(r-1>maxv)
            maxv
=r-1
            
for(j=1;j<=n;j++
                bestx[j]
=x[j];            //更新x为最优解
        }
 
        
return
    }
 
    
    
for(k=1;k<=VALUE_LIMIT;k++
        t[k]
=y[k];                    
    
for(j=x[i-1]+1;j<=r;j++
    

        
if(y[r-j]<m){
            x
=j;                    //更新几素计算x的值
            backtrack(i+1,r+1);            //递归回溯,求出前i种邮票所能达到的最大连续区间1~r-1
            for(k=1;k<=VALUE_LIMIT;k++
                y[k]
=t[k];                
        }

    }
 

以上是算法,有没有知道 for(j=0;j<=x[i-2]*(m-1);j++)中j的大小是怎么确定的啊,还有if(y[r-j]<m)这个是什么意思啊

谢谢各位大神了

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

230

主题

1950

帖子

10

精华

论坛元老

Rank: 8Rank: 8

积分
4562
金钱
4562
注册时间
2010-12-14
在线时间
32 小时
发表于 2014-5-29 21:08:38 | 显示全部楼层
没有研究过类似算法。不明白你这个算法的作用是做什么哦
我是开源电子网?网站管理员,对网站有任何问题,请与我联系!QQ:389063473Email:389063473@qq.com
回复

使用道具 举报

25

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2012-8-29
在线时间
2 小时
发表于 2014-5-30 14:13:41 | 显示全部楼层
不明觉厉~~!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 13:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表