DP-Exercise
This commit is contained in:
29
Algorithm/DP-DynamicProgramming/UVA1347 旅行 Tour.cpp
Normal file
29
Algorithm/DP-DynamicProgramming/UVA1347 旅行 Tour.cpp
Normal file
@@ -0,0 +1,29 @@
|
||||
#include <iostream>
|
||||
#include <cmath>
|
||||
#include <vector>
|
||||
using namespace std;
|
||||
|
||||
double dist(const pair<int, int>& x, const pair<int, int>& y){
|
||||
double r = sqrt( (y.first - x.first) * (y.first - x.first) + (y.second - x.second) * (y.second - x.second) );
|
||||
return r;
|
||||
}
|
||||
|
||||
int main(){
|
||||
int n;
|
||||
cin >> n;
|
||||
vector<pair<int, int>> m(n);
|
||||
for(int i = 0; i < n; i++){
|
||||
cin >> m[i].first >> m[i].second;
|
||||
}
|
||||
vector<vector<int>> dp(n, vector<int>(n, 0));
|
||||
int k = 0;
|
||||
//dp[0][0] = 0;
|
||||
int i = 0, j = 0;
|
||||
while(dp[n - 1][n - 1] == 0){
|
||||
k = max(i, j) + 1;
|
||||
dp[i][k] = min(d[i][k], d[i][j] + dist(m[k], m[j]));
|
||||
dp[k][j] = min(d[k][j], d[i][j] + dist(m[k], m[i]));
|
||||
i++;j++;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user