C++没有输出结果

来源:百度知道 编辑:UC知道 时间:2024/09/28 07:55:55
#include <stdio.h>
#include <iostream.h>

int min(int,int);
int max(int,int);
void Knapsack(int*,int*,int,int,int(*)[10]);
void Trackback(int(*)[10],int,int,int,int);
void main();

//template <class Type>
void Knapsack(int *v,int *w,int c,int n,int (*m)[10])
{
int jMax=min(w[n-1],c);
for(int j=0;j<=jMax;j++)
m[n][j]=0;
for(j=w[n];j<=c;j++)
m[n][j]=v[n];

for(int i=n-1;i>1;i--)
{
jMax=min(w[i-1],c);
for(int j=0;j<=jMax;j++)
m[i][j]=max(m[i+1][j],m[i+1][j-w[i]]+v[i]);
}
m[1][c]=m[2][c];
if(c>=w[1])
m[1][c]=max(m[1][c],m[2][c-w[1]]+v[1]);
}

//template <class Type>
void Traceback(int (*m)[10],int *w,int c,int n,int *x)
{
for(int i=1;i<n;i++)
if(m[i][c]==m[i+1][c])x[i]=0;
else {
x[i]=1;
c-=w[i];}
x[n]=(m[n][c])?1:0;
}

m[10][10]和x[10]没有初始化,里面都是脏数据。
我将你的main还数添加了一些测试代码,修改如下:

void main()
{
int n, c;
n = 5; c = 10;
int v[5] = {1,2,3,5,6};
int w[5] = {10,20,9,8,1};
int m[10][10] = {{0},{0},{0},{0},{0},{0},{0},{0},{0},{0}};
int x[10] = {0};
cout << "n = " << n << endl;
cout << "c = " << c << endl;

cout << "The element in v[5]" << endl;
for (int i = 0; i < 5; i++)
{
cout << "v[" << i << "] = " << v[i] << " ";
}
cout << endl;

cout << "The element in w[5]" << endl;
for (int i = 0; i < 5; i++)
{
cout << "w[" << i << "] = " << w[i] << " ";
}
cout << endl;

cout << "The element in m[10][10]" <