# Include <stdio. h> # Define Maxcompute 100 // Maximum number of types Int Current [Max]; Int OPT [Max]; Int T; Double Totalv; Double Totalw; Double Maxvalue; Struct { Double Value; Double Weight;} goods [Max]; Void Checkout ( Int I, Double Tw, Int Totalvalue ); Void Main (){ Int I; Double Value, weight; printf ( " Enter the number of categories " ); Scanf ( " % D " ,& T); printf ( " Enter the price and weight of the product: " ); For (I = 0 ; I <t; I ++ ) {Scanf ( " % Lf " , & Value ,& Weight); goods [I]. Value = Value; goods [I]. Weight = Weight; totalv + = Value;} printf ( " Enter weight limit " ); Scanf ( " % Lf " ,&Totalw); maxvalue = 0.0 ; For (I = 0 ; I <t; ++ I) Current [I] = 0 ; Checkout ( 0 , 0.0 , Totalv ); For (I = 0 ; I <t; ++ I) If (OPT [I]) printf ( " % D \ t " , I + 1 ); Printf ( " Total value: % d " , Maxvalue );} Void Checkout ( Int I, Double Tw, Int Totalvalue ){ Int K; If (TW + goods [I]. weight <= Totalw) {current [I] = 1 ; If (I <t- 1 ) {Checkout (I + 1 , TW, totalvalue );} Else { For (K = 0 ; K <t; ++K) {OPT [k] = Current [k];} maxvalue = Totalvalue;} current [I] = 0 ; If (Totalvalue-goods [I]. value> Maxvalue ){ If (I <t- 1 ) {Checkout (I + 1 , TW, totalvalue- Goods [I]. Value );} Else { For (K = 0 ; K <t; ++ K) {OPT [k] = Current [k];} maxvalue = Totalvalue- Goods [I]. Value ;}}}