fork download
  1. #include <cstdio>
  2. using namespace std;
  3.  
  4. char ball[] = {'a', 'b'}; // ball[0] == 'a', ball[1] == 'b'
  5. int current[] = {0, 0, 0}; // 3자리~
  6.  
  7. bool is_valid() {
  8. int valid_count[] = {2, 1};
  9.  
  10. for(int i = 0; i < sizeof current / sizeof current[0]; ++i) {
  11. if(--valid_count[ current[i] ] < 0) { // 정상적인 수보다 더 많으면
  12. return false;
  13. }
  14. }
  15.  
  16. return true;
  17. }
  18.  
  19. int main() {
  20. while(current[0] < sizeof ball) { // 2, 0, 0이 되는 순간 종료
  21. if(is_valid()) { // 유효한 조합인지 체크 (a 2개 b 하나)
  22. // 조합 출력
  23. for(int i = 0; i < sizeof current / sizeof current[0]; ++i) {
  24. putchar(ball[current[i]]);
  25. }
  26. putchar('\n');
  27. }
  28.  
  29. ++current[ sizeof current / sizeof current[0] - 1 ]; // 마지막 자리를 1 증가
  30. for(int i = sizeof current / sizeof current[0] - 1; i > 0; --i) { // 자리올림 구현
  31. if(current[i] >= sizeof ball)
  32. current[i] = 0, ++current[i - 1];
  33. else break;
  34. }
  35. }
  36.  
  37. return 0;
  38. }
Success #stdin #stdout 0s 3412KB
stdin
Standard input is empty
stdout
aab
aba
baa