我写了个0-1背包问题的C++程序,编译没错误,但运行有错误。求解释~~ 5

#include<iostream.h>#include<iomanip.h>voidmain(){intv[1000];intw[1000];intm[1000][10... #include<iostream.h>
#include<iomanip.h>
void main()
{
int v[1000];
int w[1000];
int m[1000][1000];
int i,j,n,C,MAXV;
int x[1000];
MAXV=0;
cout<<"请输入一共多少件物品\n";
cin>>n;
cout<<"请输入背包的容量\n";
cin>>C;
cout<<"请依次输入背包的容量和对应价值:\n";
for(i=1;i<n;i++)
cin>>w[i]>>v[i];
for(j=0;j<w[n];j++)
m[n][j]=0;
for(j=w[n];j<=C;j++)
m[n][j]=v[n];
for(i=n-1;i>=1;i--)
for(j=0;j<C;j++)
if(j<w[i])
m[i][j]=m[i+1][j];
else
m[i][j]=m[i+1][j]>m[i+1][j-w[i]]+v[i]?m[i+1][j]:m[i+1][j-w[i]]+v[i];
for(i=1;i<n;i++)
if(m[i][C]==m[i+1][C])
x[i]=0;
else {
x[i]=1;
C=C-w[i];
}
x[n]=m[n][C]>0?1:0;
int sum=0;
for(i=1;i<=n;i++)
if(x[i]>0){
sum+=v[i];
cout<<setw(3)<<i;
}
cout<<endl;
cout<<"最大价值为:"<<sum<<endl;
}
展开
 我来答
百度网友38c8e98
2011-09-16 · TA获得超过2657个赞
知道小有建树答主
回答量:1131
采纳率:0%
帮助的人:569万
展开全部
int v[1000];
int w[1000];
int m[1000][1000];
int i,j,n,C,MAXV;
int x[1000];
这些定义用到的是栈空间,栈没那么大啊,老兄
追问
知道,我改为100了都
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
酿美甜7985
2011-09-16 · TA获得超过285个赞
知道小有建树答主
回答量:737
采纳率:0%
帮助的人:415万
展开全部
在int main()上面加一句using namespace std;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式