不是VIP会员,不能显示答案

题目解答

题目:
(吃奶酪)房间里放着n块奶酪。一只小老鼠要把它们都吃掉,向至少要跑多少距离?老鼠一开始在(0,0)点处。

输入第一行有一个整数,表示奶酪的数量n。

第2行到第(n+1)行,每行两个实数,第(i+1)行的实数分别表示第i块奶酪的横纵坐标x_i,y_i。



输出一行一个实数,表示要跑的最少距离,保留2位小数。

数据规模与约定:

对于全部的测试点,保证1≤n≤15,|x_il,|y_i|≤200,小数点后最多有3位数字。

试补全程序

#include <bits/stdc++.h>

using namespace std;

int n;

double a[16][3];

double dp[__(1)__][16],ans;

double dis(int x,int y) {

return sqrt((a[x][1]-a[y][1])*(a[x][1]-a[y][1])+(a[x][2]-a[y][2])*(a[x][2]-a[y][2]));

}

int main() {

cin>>n;

for (int i=1; 1<=n; i++) cin>>a[i][1]>>a[i][2];

n++;

memset (dp,127,sizeof (dp)) ;

dp[1][0]=0;

for (int s=0; s<=(1<<n)-1; s++) {

for(int i=1; i<=n-1; i++) {

if(__(2)__) continue;

int x=__(4)__;

for(int j=0; j<=n-1; j++) {

if(__(3)__) continue;

dp[s][i]=min(dp[s][i],dp[x][j]+dis(j,i));

}

}

}

int x=__(5)__;

ans=dp[x][1];

for (int i=2; i<n; i++) ans=min(dp[x][i],ans);

printf("%.2lf",ans);

return 0;

}


选择题

1) ⑴处应填( )。

2) ⑵处应填( )。

3) ⑶处应填( )。

4) ⑷处应填( )。

5) ⑸处应填( )。
考点:
分析:
解答:
评论:
老师: