• 大小: 901B
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: C/C++
  • 标签:

资源简介

运用贪心策略解决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

评论

共有 条评论

相关资源