Ciao, per quanto ne so io, un vettore va creato così (con le parentesi in questo modo):


Vector miovettore=new Vector();


e puoi metterci dentro quello che ti pare.
Sicuramente il problema te lo dà perchè tu scrivi new (Vector)weight, e quelle parentesi lì non hanno alcun senso.
Infatti in quel modo stai cercando di effettuare un cast da weight a Vector, mentre lo crei.

Se la tua intenzione è di passare un vettore nuovo, allora scrivi soltanto new Vector(), in questo modo:
Knapsack KS = new Knapsack(Capacity, new Vector(), new Vector());

Se invece vuoi dare un nome al vettore, allora definiscilo fuori dalla chiamata al metodo, così:

Vector weights=new Vector();
Vector values=new Vector();
Knapsack KS = new Knapsack(Capacity, weights, values);


Spero di esserti stato d'aiuto.
Ciao,
Emanuele