Here's what i've done, the output of this program is suppose to have

"w(1234) = 6 Sample set: 1 1 2 2 6 10" this works! however for larger numbers it wont have the correct sample set.

The sample set are the cubes that make up that w(n) number, i can't seem to get the correct answer for larger numbers for e.g.

"W(10000) = 3 Sample set: 10 10 20",

i think its something to do with the int w(int n)

its choosing the wrong m.

Please assist!!

Code:int w(int n, int cubes[], int S[], int T[]); void printSample(int n,int cubes[],int S[],int T[]); const int maxCubes = 10; //never more than 9 cubes so 10 is safe const int maxInput = 16000; int main() { int n; // delclaring variables int cubes[24]; // holds cubes of numbers. max is 24^3 saves recalculation int S[maxInput]; int T[maxInput]; int i, cube; // initialize cube table for(i=1;(cube=(i*i*i)) <= maxInput; i++){ // saves all m^3 from 1-11 data cubes[i-1] = cube; } cout << "Enter a non negative integer: " ; cin >> n; while (n > 0) // tests for non-negative numbers { for(i=0; i<=n; i++){ // initialize T and S w(i,cubes,S,T); } cout << "W(" << n << ") = " << T[n] << " " << "Sample Set: "; // printS(n,S,T); printSample(n,cubes,S,T); cout << endl; cout << "Enter a non negative integer: " << endl; cin >> n; } return 0; // terminates when integer is negative } void printSample(int n,int cubes[],int S[],int T[]){ if(n == 0) return; else{ printSample(n-cubes[(S[n])],cubes,S,T); cout << " "; cout << S[n] + 1; } } // Waring algorithm int w(int n, int cubes[], int S[],int T[]) { int minValue = maxCubes; int m; if (n == 0) return 0; else { for(m = 0; cubes[(m + 1)] <= n; m++){ } T[n] = 1 + T[n - cubes[m]]; S[n] = m; } return T[n]; }