알고리즘 모음(C++)

백준 6603 - 로또(C++) 본문

백준

백준 6603 - 로또(C++)

공대생의 잡다한 사전 2024. 1. 21. 23:05

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

6603번: 로또

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로

www.acmicpc.net

백트래킹을 이용한 문제입니다.

자세한 것은 코드를 참고해주세요.

#define _CRT_SECURE_NO_WARNINGS
#include <cstring>
#include <vector>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cmath>
#include <cstdio>
using namespace std;

int N;
vector<int> num;
int Select[14];
int arr[14];

void solve(int st, int cnt){
	if(cnt == 6){
		for(int i = 0; i < 6; i++){
			cout << num[i] << " ";
		}
		cout << "\n";
		return;
	}
	else{
		for(int i = st; i < N; i++){
			if(Select[i] == 1) continue;
			Select[i] = 1;
			num.push_back(arr[i]);
			solve(i, cnt+1);
			num.pop_back();
			Select[i] = 0;
		}
	}
}

int main() {
	cin.tie(0);
	cout.tie(0);
	while(1){
		cin >> N;
		if(N == 0) break;
		for(int i = 0; i < N; i++) cin >> arr[i];
		solve(0, 0);
		cout << "\n";
	}
	return 0;
}


질문 및 조언은 댓글을 남겨주세요.

'백준' 카테고리의 다른 글

백준 2476 - 주사위 게임(C++)  (1) 2024.01.24
백준 10886 - 0 = not cute / 1 = cute(C++)  (0) 2024.01.24
백준 13907 - 세금(C++)  (0) 2024.01.05
백준 13308 - 주유소(C++)  (0) 2024.01.03
백준 17835 - 면접보는 승범이네(C++)  (0) 2023.12.31