fork download
  1. #include <iostream>
  2. #include <vector>
  3. //#include <string>
  4. #include <cmath>
  5.  
  6. int main(int argc, char* argv)
  7. {
  8. std::vector<std::string> signs;
  9. signs.push_back("a");
  10. signs.push_back("b");
  11.  
  12. size_t digits = 3;
  13. size_t num_variations = pow(signs.size(), digits);
  14.  
  15. std::vector<std::string> variations;
  16. variations.resize(num_variations * digits);
  17.  
  18. size_t sign_index = 0;
  19.  
  20. for (size_t column = 0; column < digits; ++column)
  21. {
  22. size_t row = 0;
  23.  
  24. for (size_t subindex1 = 0; subindex1 < pow(signs.size(), column + 1); ++subindex1)
  25. {
  26. for (size_t subindex2 = 0; subindex2 < pow(signs.size(), digits - (column + 1)); ++subindex2)
  27. {
  28. variations[digits * row + column] = signs[sign_index % signs.size()];
  29.  
  30. ++row;
  31. }
  32.  
  33. ++sign_index;
  34. }
  35. }
  36.  
  37. size_t index = 0;
  38. for (size_t index_a = 0; index_a < num_variations; ++index_a)
  39. {
  40. for (size_t index_b = 0; index_b < digits; ++index_b)
  41. {
  42. std::cout << variations[index] << " ";
  43. ++index;
  44. }
  45. std::cout << '\n';
  46. }
  47. }
Success #stdin #stdout 0s 4400KB
stdin
Standard input is empty
stdout
a a a 
a a b 
a b a 
a b b 
b a a 
b a b 
b b a 
b b b