背包问题
#include<iostream>
using namespace std;
#include<stdlib.h>
#define max 100
void Init_fun(int num);
void DiGui_fun(float a[], int b[], float tatol, int i, float T, int num);
int main()
{
int num;
cout<<"请输入你要输入物体得个数:";
cin>>num;
Init_fun( num );
return 0;
}
void Init_fun(int num)
{
int counter, i=0;
float a[max];
int b[max];
float T=0, tatol=0;
cout<<"请输入元素";
a[0]=0;
for(counter=1; counter<=num; counter++)
cin>>a[counter];
for(counter=0; counter<=num; counter++)
b[counter]=0;
cout<<"输入总重量:";
cin>>T;
DiGui_fun(a, b, tatol, i, T, num+1);
}
void DiGui_fun(float a[], int b[], float tatol, int i, float T, int num)
{
tatol=tatol + a[i];
if(tatol==T){
for(int j=1; j<=i; j++){
if(b[j]==1)
cout<<a[j]<<"\t";
}
cout<<"\n";
}
else{
for(int n=i+1; n<=num; n++){
b[n]=1;
DiGui_fun(a, b, tatol, n,T, num );
b[n]=0;
}
}
}