Advertisement
drout

numero decomposto em todas as somas

Aug 23rd, 2017
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.50 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4.  
  5. std::vector < std::vector< int >> vec_vec;
  6.  
  7. void somarec( int max, int iter, int pos, std::vector<int> vec )
  8. {
  9.     if( vec.size() == 0 )
  10.     {
  11.         std::vector <int> novo_vec;
  12.  
  13.         if( max <= 0 )
  14.         {
  15.             novo_vec.push_back( 0 );
  16.             vec_vec.push_back( novo_vec );
  17.         }
  18.         else
  19.         {
  20.             for( int i = 0; i < max; i++ )
  21.                 novo_vec.push_back( 1 );
  22.  
  23.             vec_vec.push_back( novo_vec );
  24.             somarec( max, max, pos, novo_vec );
  25.         }
  26.     }
  27.     else if( pos < vec.size() )
  28.  
  29.         for( int i = 2; i <= iter; i++ )
  30.         {
  31.             vec[ pos ] = i;
  32.  
  33.             int soma_parc = 0;
  34.             for( int j = 0; j <= pos; j++ )
  35.                 soma_parc += vec[ j ];
  36.  
  37.             if( soma_parc <= max )
  38.             {
  39.                 soma_parc = max - soma_parc;
  40.                 for( int j = 1; j <= soma_parc; j++ )
  41.                     vec[ j + pos ] = 1;
  42.                 vec.resize( soma_parc + pos + 1 );
  43.  
  44.                 vec_vec.push_back( vec );
  45.             }
  46.  
  47.             somarec( max, i, pos + 1, vec );
  48.  
  49.         }
  50.    
  51. }
  52.  
  53. void debug_vec()
  54. {
  55.     for( int i = 0; i < vec_vec.size(); i++ )
  56.         for( int j = 0, ult = vec_vec[ i ].size(); j < ult; j++ )
  57.             std::cout << vec_vec[i][ j ] << (j == ult - 1 ? "\x0d\x0a" : "+");
  58. }
  59.  
  60. int main()
  61. {
  62.     std::vector<int> vec( 0 );
  63.  
  64.     somarec( 7, 0, 0, vec );
  65.  
  66.     debug_vec();
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement