#include<iostream>
using namespace std;void Swap(float &a,float &b);
void sort(Object &q,int n);                              ////   此处 object有错template<class Typew,class Typep>
class Knap
{
friend Typep Knapsack(Typep*,Typew*,Typew,int);
public:
Typep Bound(int i);
void Backtrack(int i);
Typew c;
int n;
Typew *w;
Typep *p;
Typew cw;
Typep cp;
Typep bestp;
};template<class Typew,class Typep>
void Knap<Typew,Typep>::Backtrack(int i)
{
if(i>n)
{
bestp=cp;
return;
}
if(cw+w[i]<=c)
{
cw+=w[i];
cp+=p[i];
Backtrack(i+1);
cw-=w[i];
cp-=p[i];

}
if(Bound(i+1)>best)
Backtrack(i+1);
}template<class Typew,class Typep>
Typep Knap<Typew,Typep>::Bound(int i)
{
Typew cleft=c-cw;
Typep b=cp;
while(i<=n && w[i]<=cleft)
{
cleft-=w[i];
b+=p[i];
i++;
}
if(i<=n)b+=p[i]*cleft/w[i];
return b;
}class Object
{
friend int Knapsack(int*, int*,int,int);
public:
int operator<=(Object a) const
{
return(d>=a.d);
}
public:
int ID;
float d;
};template<class Typew,class Typep>
Typep Knapsack(Typep *p,Typew *w,Typew c, int n)
{
Typew W=0;
Typep P=0;
Object *Q= new Object[n];
for(int i=1;i<=n;i++)
{
Q[i-1].ID=i;
Q[i-1].d=1.0*p[i]/w[i];
P+=p[i];
W+=w[i]; }
if(W<=c)return P;
Sort(Q,n);
Knap <Typew,Typep>K;
K.p=new Typep[n+1];
K.w=new Typew[n+1];
for(int i=1;i<=n;i++)
{
K.p[i]=p[Q[i-1].ID];
K.w[i]=w[Q[i-1].ID];
}
K.cp=0;
K.cw=0;
K.c=c;
K.n=n;
K.bestp=0;
K.Backtrack(1);
delete[]Q;
delete[]K.w;
delete[]K.p;
return K.bestp;
}
void sort(Object &q,int n) //    此处Object有错
{
for(int i=0;i<=n;i++)
{
int k=i;
for(int j=i+1;j<=n;j++)
{
if(q[j] < q[k])k=j;
}
if(k!=i)
{
Swap(q[i],q[k]);
}
}
}
void Swap(float &a,float &b)
{
float k;
k=a;
a=b;
b=k; 
}void main()
{
int n=5;
int c=10;
int v[5]={6,3,5,4,6};
int w[5]={2,2,6,5,4};
//int Knapsack (int v[5],int w[5],int c ,int n);    cout<<Knapsack<int,int>(v,w,c,n)<<endl;
getchar();
}错误 1 error C2065: 'Object' : undeclared identifier c:\documents and settings\cs\my documents\visual studio 2005\projects\huisu\huisu\knap.cpp 5
错误 2 error C2065: 'q' : undeclared identifier c:\documents and settings\cs\my documents\visual studio 2005\projects\huisu\huisu\knap.cpp 5
错误 3 error C2062: type 'int' unexpected c:\documents and settings\cs\my documents\visual studio 2005\projects\huisu\huisu\knap.cpp 5
错误 4 error C2062: type 'int' unexpected c:\documents and settings\cs\my documents\visual studio 2005\projects\huisu\huisu\knap.cpp 107
错误 5 error C2143: syntax error : missing ';' before '{' c:\documents and settings\cs\my documents\visual studio 2005\projects\huisu\huisu\knap.cpp 108
错误 6 error C2447: '{' : missing function header (old-style formal list?) c:\documents and settings\cs\my documents\visual studio 2005\projects\huisu\huisu\knap.cpp 108