資源簡介
運用貪心策略解決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語言源碼已通過
評論
共有 條評論