반응형
#include
#include
#include
#include
using namespace std;
int board[20][20];
int main()
{
memset(board,0,sizeof(board));
int num;
cin>>num;
for(int i=0;i<num;i++){
for(int j=0;j<num;j++){
cin>>board[i][j];
}
}
/*
for(int i=0;i<num;i++){
for(int j=0;j<num;j++){
cout<<board[i][j]<<" ";
}
cout<<endl;
}
*/
vector ind;
for(int i=0;i<num;i++){
if(i<num/2){
ind.push_back(1);
}else{
ind.push_back(0);
}
}
/*
for(int i=0;i<ind.size();i++){
cout<<ind[i]<<" ";
}
*/
int minNum = 987654321;
do{
int teamA = 0;
int teamB = 0;
int mins =0;
for(int i=0;i<num;i++){
for(int j=0;j<num;j++){
if(ind[i] == ind[j]){
if(ind[i] == 1){
teamA += board[i][j];
}else{
teamB += board[i][j];
}
}
}
}
if(teamA > teamB){
mins = teamA - teamB;
}else{
mins = teamB - teamA;
}
minNum = min(minNum,mins);
}while(prev_permutation(ind.begin(),ind.end()));
cout<<minNum;
return 0;
}
https://www.acmicpc.net/problem/14889
14889번: 스타트와 링크
예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다.
www.acmicpc.net
반응형
'개발자 > 알고리즘' 카테고리의 다른 글
[BOJ] 1987 알파벳 (0) | 2019.10.16 |
---|---|
[BOJ] 2580번 스도쿠 (0) | 2019.10.15 |
[BOJ] 1339번 단어수학 (0) | 2019.10.13 |
[BOJ] 1748번 수 이어 쓰기1 (0) | 2019.10.13 |
[BOJ] 1261번 알고스팟 -deque (0) | 2019.10.12 |