数据结构,背包问题

#include"stdio.h"constSTACK_INIT_SIZE=100;constSTACKINCREMENT=10;constTRUE=1;constFAL... #include "stdio.h"
const STACK_INIT_SIZE=100;
const STACKINCREMENT=10;
const TRUE=1;
const FALSE=0;
typedef int SElemType;
typedef struct {
SElemType *elem;
int top; /*栈顶位置(下标),top=-1时,表示空栈*/
int stacksize;
int incrementsize;
}SqStack;

void InitStack ( SqStack *S, int maxsize=STACK_INIT_SIZE,int incresize=STACKINCREMENT)
{
S->elem=new SElemType[maxsize];
S->top = -1;
S->stacksize=incresize;
S->incrementsize=incresize;
}

void Push (SqStack &S, SElemType e)
{
if (S.top == S.stacksize-1)
return;
S.top++;
S.elem[S.top] = e; //加入新元素
}

bool Pop(SqStack &S, SElemType &e)
{
if(S.top== -1)
return FALSE;
e=S.elem[S.top --];
return TRUE;
}

bool GetTop (SqStack &S, SElemType &e)
{
if(S.top==-1) return FALSE;
e=S.elem[S.top];
return FALSE;
}

bool StackEmpty(SqStack &S)
{
if(S.top== -1)
return TRUE;
else
return FALSE;
}

bool StackTraverse(SqStack &S)
{
int i;
for (i=S.top;i>=0;i--)
{
printf("%d",S.elem[i]);
}
return true;

}

void knapsack(int w[],int T,int n)
{
SqStack S;
InitStack(&S);
int k=0;
do
{
while(T>0 && k<n){
if (T -w[k] >=0)
{
Push(S,k);T-=w[k];
}
k++;
}
if(T==0) StackTraverse(S);
Pop(S,k);T+=w[k];
k++;
} while (!StackEmpty(S)||(k<n));

}

int main()
{
int T,n;

SqStack S;
knapsack(S,T,n);
return 0;
}
最后给出是这样怎么回事?
展开
 我来答
chmwh1992
2015-05-02 · TA获得超过1126个赞
知道小有建树答主
回答量:475
采纳率:100%
帮助的人:532万
展开全部
你定义的void knapsack(int w[],int T,int n)第一个参数是整数数组int []
而在main()函数中调用该函数knapsack(S,T,n)时的第一个实参是栈AqStack
错误的意思就是指这里
景联文科技
2024-06-11 广告
杭州景联文科技有限公司专注于大模型数据集的研发与应用。我们深知,在人工智能飞速发展的时代,数据是驱动模型优化的核心动力。因此,我们致力于构建丰富、多元的大模型数据集,涵盖各行各业,为AI模型提供充足的“养分”。通过不断积累与优化,我们的数据... 点击进入详情页
本回答由景联文科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式