Inflearn Community Q&A
문제점을 모르겠습니다.
Written on
·
179
0
#include<iostream>
#include <fstream>
#include<string>
#include<cstdlib>
#include<vector>
#include<cmath>
#include <algorithm>
#include <cctype>
#include <cstring>
#include<stack>
#include<queue>
#include <utility>
#define INF 214700000
using namespace std;
int n, m;
int ch[51];
int res= 9999,sum=0,dis;
vector <pair<int, int>> p;
vector <pair<int, int>> h;
void DFS(int s, int L) {
if (L == m) {
for (int i = 0;i < m;i++) {
cout << ch[i] << " ";
}
cout << endl;
sum = 0;
for (int i = 0;i<m;i++) {
int x1 = p[ch[i]].first;
int y1 = p[ch[i]].second;
dis = 9999;
for (int j = 0;j < h.size();j++) {
int x2 = h[j].first;
int y2 = h[j].second;
int d = abs(x2 - x1) + abs(y2 - y1);
dis = min(dis,d);
}
sum += dis;
}
if (sum <res) res = sum;
}
else {
for (int i = s;i < p.size();i++) {
ch[L] = i;
DFS(i + 1, L + 1);
}
}
}
int main() {
ios_base::sync_with_stdio(false);
//ifstream cin;
///cin.open("input.txt");
//if (cin.is_open()) {
cin >> n >> m;
int a;
for(int i=1;i<=n;i++){
for (int j = 1;j <= n;j++) {
cin >> a;
if (a == 2) {
p.push_back({ i,j });
}
else if (a == 1) {
h.push_back({ i,j });
}
}
}
DFS(0, 0);
cout <<res;
//}
}
제가 선생님하고 다르게 짠부분은 i에 pizza값을 넣고
j에 house를 넣었는데 이 부분이 틀린거 같은데 틀린이유를 모르겠습니다...
Answer 1
0
문제 내용을 보면
"도시에는 각 집마다 “피자배달거리”가 았는데 각 집의 피자배달거리는 해당 집과 도시의 존재 하는 피자집들과의 거리 중 최소값을 해당 집의 “피자배달거리”라고 한다. "
"도시의 피자 배달 거리는 각 집들의 피자 배달 거리를 합한 것을 말합니다."
내용이 있습니다.
집이 기준이 되어 피자배달거리를 구해야 합니다. 즉 피자배달거리는 집 개수만큼 나와야 합니다.





