Post List

[BOJ] 백준 6603 로또

문제링크 https://www.acmicpc.net/problem/6603

이 문제는 전형적인 브루트포스 문제이다.
set이 주어졌을 때, 나올수 있는 6가지의 숫자 조합을 적으면 된다.

로또는 6개가 서로 다른 숫자면 된다.
즉, 1 2 3 4 5 6 과 6 5 4 3 2 1 이 같다.
이 문제의 경우, 이 두가지는 1가지로 축소(1 2 3 4 5 6으로) 해야 한다.
따라서 재귀함수 부분에서 1부터 시작하는 것으로 했다.

소스코드 :
#include 
#include 
using namespace std;


vector origin;

void Func(vector v, int s) {

 if (v.size() == 6) { 
  for (int i = 0; i < 6; i++) {
   cout << v[i] << ' ';
  }
  cout << endl;
  return;
 }

 for (int i = s; i < origin.size(); i++) {
  v.push_back(origin[i]);
  Func(v,i+1);
  v.pop_back();
 }


}


int main() {

 while (true) {
  int ah;
  cin >> ah;
  if (ah == 0) break;
  for (int i = 0; i < ah; i++) {
   int a;
   cin >> a;
   origin.push_back(a);
  }
  vector t;
  Func(t, 0);
  cout << endl;
  origin.clear();
 }
 
}

댓글