资源简介
运用贪心策略解决0 1背包问题
void beibao(int *w,int *v,int *x,int n,int *C)
{
int i,j,temp;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(v[i]/w[i]<v[j]/w[j])
{
temp=v[i];
v[i]=v[j];
v[j]=temp;
temp=w[i];
w[i]=w[j];
w[j]=temp;
}
for(i=0;i<n;i++)
x[i]=0;
for(i=0;w[i]<=*C;i++)
{
x[i]=1;
*C=*C-w[i];
}
}
void main()
{
int i,*w,*v,*x,n,C;
cout<<"请输入物品数"<>n;
w=new int(n);//动态分配内存
v=new int(n);
x=new int(n);
cout<<"请输入背包的容量"<>C;
cout<<"请分别输入"<<n<<"个物品的重量:"<<endl;
for(i=0;i>w[i];
cout<<"请分别输入"<<n<<"个物品的价值:"<<endl;
for(i=0;i>v[i];
beibao(w,v,x,n,&C);
cout<<"应用贪心策略装入背包的物品的重量分别为:"<<endl;
for(i=0;i<n-1;i++)
if(x[i]==1)
cout<<" "<<w[i];
cout<<" "<<C<<"/"<<w[i]<<endl;
}
代码片段和文件信息
#include
using namespace std;
void beibao(int *wint *vint *xint nint *C)
{
int ijtemp;
for(i=0;i for(j=i+1;j if(v[i]/w[i] {
temp=v[i];
v[i]=v[j];
v[j]=temp;
temp=w[i];
w[i]=w[j];
w[j]=temp;
}
for(i=0;i x[i]=0;
for(i=0;w[i]<=*C;i++)
{
x[i]=1;
*C=*C-w[i];
}
}
void main()
{
int i*w*v*xnC;
c
- 上一篇:fcgi头文件及lib库
- 下一篇:u2270b解调C语言源码已通过
评论
共有 条评论