您的位置:首页>聚焦>股票 >内容

c语言背包问题 贪心算法(用C语言实现背包问题求解)

2022-07-15 19:39:53来源:
导读想必现在有很多小伙伴对于用C语言实现背包问题求解。方面的知识都比较想要了解,那么今天小好小编就为大家收集了一些关于用C语言实现背包

想必现在有很多小伙伴对于用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;

}

}}

本文到此结束,希望对大家有所帮助。

免责声明:本文由用户上传,如有侵权请联系删除!

猜你喜欢

最新文章