백준 3040

HR·2022년 4월 20일
0

알고리즘 문제풀이

목록 보기
16/50

백준 3040 : 백설 공주와 일곱 난쟁이

  1. 조합으로 풀면 됨!
  2. 먼저 7명 뽑고
  3. 합이 100이 되면 통과, 아니면 다시

정답 코드

#include <bits/stdc++.h>

using namespace std;

int elp[10];
vector<int> v; //index들이 들어있는 벡터 

/* print answer */
void printVec(vector<int> v) {
	for(int j=0; j<v.size(); j++) {
		cout<<elp[v[j]]<<'\n';
	}
}

/* sum all vector */
int sumVec(vector<int> v) {
	int sum=0;
	for(int i=0; i<7; i++) {
		sum+=elp[v[i]];
	}
	
	return sum;
}

/* combination */
void combi(int start, vector<int> v) {
	if(v.size()==7) {
		if(sumVec(v) == 100) { //if sum is 100
			printVec(v); //print answer
			return;
		}		
	}
	
	for(int i=start+1; i<9; i++) {
		v.push_back(i);
		combi(i, v);
		v.pop_back();
	}
}


int main() {	
	for(int i=0; i<9; i++) {
		cin>>elp[i];
	}
	
	combi(-1, v);
	
	return 0;
}

0개의 댓글