| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 660 人关注过本帖
标题:0/1背包程序
只看楼主 加入收藏
simpley
Rank: 1
等 级:新手上路
帖 子:262
专家分:0
注 册:2005-2-23
收藏
 问题点数:0 回复次数:0 
0/1背包程序
以前看过深度搜索的算法
这是我自己设计的一个广度搜索算法,
float w[10],p[10];
int t[110][20];
#define N 4

f(int i,float limit,float s,int k){float d,d1;
if(limit==0)return 0;
if(!i){if(w[i]<=limit)return p[0];return 0;}
s-=p[i];
if(w[i]<=limit){
if((d=f(i-1,limit-w[i],s,2*k-1)+p[i])>=s){t[i][2*k-1]=1;return d;}
if(d>=(d1=f(i-1,limit,s,2*k))){t[i][2*k-1]=1;return d;}return d1;   }
else return f(i-1,limit ,s,2*k);}

main(){int i,j;float y, s=0;
for(i=0;i<N;i++){
scanf("%f",&w[i]);scanf("%f",&p[i]);s+=p[i];}
for(i=0;i<10;i++)
for(j=0;j<10;j++)t[i][j]=0;
y=f(N-1,7,s,1);j=1;
for(i=2;i>=0;i--){if(t[i][j]){j=2*j-1;
printf("%f,",w[i]);}else j*=2;}
printf("\nsum=%f",y);getch();}
搜索更多相关主题的帖子: 背包 
2005-06-29 14:05
快速回复:0/1背包程序
数据加载中...
 
   



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

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