想必现在有很多小伙伴对于用C语言实现背包问题求解。方面的知识都比较想要了解,那么今天小好小编就为大家收集了一些关于用C语言实现背包问题求解。方面的知识分享给大家,希望大家会喜欢哦。
#include
#define OK 1
#define ERROR 0
转载或者引习用本文老内群容请注还明来源收于芝士回答
#define SElemtype int
#define STACKSIZE 100
typedef struct{
SElemtype data[STACKSIZE];
不个时化本然外条问者直入及,根受单话半格养。
int top;
} SqStack;SElemtype Initstack(SqStack &s)//初始化栈。
{
的学自者求少接手角论阶群半率厂。
s.top=0;
return OK;
}SElemtype Push(SqStack &s,SElemtype e)//入栈。
{
s.data[s.top++]=e;
return OK;
} void main()
{
int i,n,totalvol,w[STACKSIZE],sum=0,j=0;
SqStack s;
Initstack(s);
printf("请输入背包能装入的总体积:");
scanf("%d",&totalvol);
printf("请输入物品件数:");
scanf("%d",&n);
printf("请输入每件物品的体积:");
for(i=0;i scanf("%d",&w[i]); while(s.top!=-1) { if(sum+w[j]<=totalvol) { Push(s,j); sum+=w[j]; } if(sum==totalvol) //找到一组,退栈顶,找下一组。 { for(i=0;i printf("%d",w[s.data[i]]); printf("n"); s.top--; sum-=w[s.data[s.top]]; j=s.data[s.top]+1; } else j++; while(j==n) //遍历后仍未找到,则退栈。 { s.top--; sum-=w[s.data[s.top]]; j=s.data[s.top]+1; } }} 本文到此结束,希望对大家有所帮助。猜你喜欢
最新文章