728x90
반응형
https://www.acmicpc.net/problem/6603
독일 로또에서 로또번호를 뽑는 경우의 수를 모두 출력하는 문제이다.
알고스팟에 PICNIC 문제와 비슷한 함수를 구현해서 풀어보았다.
다른점이 있다면 이 문제는 테스트 케이스가 여러개가 주어지기 때문에 테케마다 원본 벡터를 초기화 해야하기 때문에 매 테스트 케이스마다 벡터를 새로 선언해서 원소를 넣어주고 solve함수에 인자로 주었다.
#include <iostream>
#include <algorithm>
#include <vector>
#include <cstdio>
using namespace std;
int taken[60]={0,};
void solve(int K, int now, vector<int>& arr, vector<int>& picked, int topick)
{
if(topick==0)
{
for(int i=0;i<6;i++)
printf("%d ",picked[i]);
printf("\n");
return;
}
for(int i=now;i<K;i++)
{
if(taken[i]==0)
{
taken[i]=1;
picked.push_back(arr[i]);
solve(K,i+1,arr,picked,topick-1);
taken[i]=0;
picked.pop_back();
}
}
return;
}
int main()
{
int K=1;
while(K!=0)
{
scanf("%d",&K);
if(K==0)
break;
for(int i=0;i<60;i++)
taken[i]=0;
int num;
vector<int> arr, picked;
for(int i=0;i<K;i++)
{
scanf("%d",&num);
arr.push_back(num);
}
solve(K,0,arr,picked,6);
printf("\n");
}
return 0;
}
728x90
반응형
'PS(Problem Solving) > 백준(BOJ)' 카테고리의 다른 글
[백준][10815번][C++] 숫자 카드 (0) | 2020.11.22 |
---|---|
[백준][2004번][C++] 조합 0의 개수 (0) | 2020.11.20 |
[백준][1707번][C++] 이분 그래프 (0) | 2020.11.16 |
[백준][1026번][C++] 보물 (0) | 2020.11.15 |
[백준][1158번][C++] 요세푸스 문제 (0) | 2020.11.15 |