Uses divide and conquer to solve the following problem
Q: a positive integer and n represents a series of positive integers and n = n1 + n2 + ... + nk (= n2 where, n1>> = ...> = nk> = 1, k> = 1), find any dividing the number of positive integer n (n <10).
Example: 5 following five kinds integer division:
5=4+1,5=3+2,5=3+1+1,5=2+1+1+1,5=1+1+1+1+1
#include <stdio.h> #include <the iostream> the using namespace STD; int bufferArray [ 1000 ] = { 0 }; // buffer array int bufferLenth = 0 ; // current length of the buffer array int outputSignal = - . 1 ; // the current control signal outputted int Total = 0 ; // Number of division // division integer, number = number to be divided, tempNumber = dividing number void dividedInt ( int Number, int tempNumber) { IF (Number <= 0) Return ; IF (Number> = tempNumber) { Total ++ ; // no output signal -1, 0 when the buffer is greater than the length of the array, and the first buffer array output signal is not equal to, or buffer array is zero, and to divide the digital output signal is not equal to the IF - (outputSignal> . 1 && ((bufferLenth> 0 && bufferArray [ 0 ] = outputSignal) || (bufferLenth ==! 0 && Number =! outputSignal))) the printf ( " \ n- " ); // otherwise, if the output signal is greater than. 1 the else IF (outputSignal> . 1 ) the printf ( " , " ); // output buffer array IF (bufferLenth> 0 ) { for ( int I = 0 ; I <bufferLenth; I ++) the printf ( " % D + " , bufferArray [I]); outputSignal = bufferArray [ 0 ]; } the else outputSignal = Number ; the printf ( " % D " , number); iF (tempNumber> 0 ) the printf ( " + D% " , tempNumber); // divide and conquer when --- is greater than the divided number. 1 iF(tempNumber> . 1 ) { bufferArray [bufferLenth ++] = Number; dividedInt (tempNumber - . 1 , . 1 ); bufferLenth - ; } } // divide and conquer - to be divided when dividing a digital number is less than the else { bufferArray [ bufferLenth ++] = Number; dividedInt (Number, tempNumber - Number); bufferLenth - ; } // divide and conquer - to be divided when the number is greater than. 1 dividedInt (Number - . 1 , tempNumber +. 1 ); } int main () { int Number; COUT << " Please enter an integer divide " << endl; Scanf ( " % D " , & Number); the printf ( " Start division: \ n- " ); dividedInt (Number, 0 ); the printf ( " \ Total n-:% D " , Total); return 0 ; }
We recommend using vc ++ 6.0