백준 3980 선발명단

jathazp·2021년 4월 30일
0

algorithm

목록 보기
27/57

문제링크

https://www.acmicpc.net/problem/3980

문제

풀이

최대 5개의 포지션에 배치가 가능하다는 조건을 보고 백트래킹으로 전부 탐색하며 풀 수 있을것이라 생각하였다.
자세한 풀이는 코드 참조

시행착오

개행문자 생략으로 인한 오답제출

코드

#include <iostream>
#include <functional>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
int maps[11][11];
bool vi[11];
int solve(int idx,int sumn) {

	if (idx == 11) {
		return sumn;
	}
	int ans = -1;
	for (int i = 0; i < 11; i++) {
		if (maps[idx][i] != 0 && !vi[i]) {
			vi[i] = true;
			ans = max(ans, solve(idx + 1, sumn + maps[idx][i]));
			vi[i] = false;
		}
	}
	return ans;
}

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);

	int tc;
	cin >> tc;

	for (int i = 0; i < tc; i++) {
		for (int a = 0; a < 11; a++) {
			for (int b = 0; b < 11; b++) {
				cin >> maps[a][b];
			}
		}
		cout << solve(0, 0) << '\n';
		
	}
}

후기

백트래킹의 기본적인 형태

0개의 댓글