Integer division - divide and conquer to solve

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

Guess you like

Origin www.cnblogs.com/wxh-blos/p/12093730.html