Problem
Problem URL : 선발 명단
Answer Code
#include<iostream>
#include<algorithm>
using namespace std;
int map[12][12];
int pos_y[12];
int dfs(int x,int value){
if( x > 11 ) return value;
int ans = 0;
for(int i=1; i<=11; i++){
if(map[x][i] != 0 && !pos_y[i]){
pos_y[i] = 1;
ans = max( ans, dfs(x+1, value + map[x][i]) ) ;
pos_y[i] = 0;
}
}
return ans;
}
int main(){
int tc;
cin >> tc;
while (tc--) {
for(int i=1; i<=11; i++){
for(int j=1; j<=11; j++){
scanf("%d",&map[i][j]);
}
}
int ans = 0;
for(int i=1; i<=11; i++){
if( map[1][i] ){
pos_y[i] = 1;
ans = max ( ans, dfs(2 ,map[1][i]));
pos_y[i] = 0;
}
}
printf("%d\n",ans);
}
return 0;
}
Feed Back (18. 02. 05)
-
알쿡 대회에 출제되었던 구현 문제
-
대회 때 시간이 없어서 아예 보지도 못했던 문제
-
이거 너무 쉬운데?… 물론 자잘한 실수로 인해 One Shot은 못했지만 ㅎㅎ