• 洛古——P1433 吃奶酪


    https://www.luogu.org/problem/show?pid=1433

    题目描述

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

    输入输出格式

    输入格式:

    第一行一个数n (n<=15)

    接下来每行2个实数,表示第i块奶酪的坐标。

    两点之间的距离公式=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))

    输出格式:

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

    输入输出样例

    输入样例#1:
    4
    1 1
    1 -1
    -1 1
    -1 -1
    输出样例#1:
    7.41

     1 #include <algorithm>
     2 #include <cstdio>
     3 #include <cmath>
     4 
     5 using namespace std;
     6 
     7 int n,vis[20];
     8 struct Node
     9 {
    10     double x,y;
    11 }node[20];
    12 double ans=1<<30,dis[20][20];
    13 
    14 void DFS(int now,double dist,int cnt)
    15 {
    16     if(dist>=ans) return;
    17     if(cnt==n+1)
    18     {
    19         if(ans>dist) ans=dist;
    20         return ;
    21     }
    22     for(int i=1;i<=n;i++)
    23     {
    24         if(vis[i]) continue;
    25         vis[i]=1;
    26         DFS(i,dist+dis[now][i],cnt+1);
    27         vis[i]=0;
    28     }
    29 }
    30 
    31 int main()
    32 {
    33     scanf("%d",&n);
    34     for(int i=1;i<=n;i++)
    35         scanf("%lf%lf",&node[i].x,&node[i].y);
    36     for(int i=0;i<=n;i++)
    37         for(int j=0;j<=n;j++)
    38             dis[i][j]=sqrt((node[i].x-node[j].x)*(node[i].x-node[j].x)+(node[i].y-node[j].y)*(node[i].y-node[j].y));
    39     DFS(0,0,1);
    40     printf("%.2lf",ans);
    41     return 0;
    42 }
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    Ubuntu: Set socks5 proxy for git
    Tornado实现一个消息墙。
    android 5.0开启google now 【需ROOT】
    python 回调函数
    php开发bug
    复习
    关于 xshell
    前端页面
    yii框架对数据库查询访问处理
    前端笔记
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7189560.html
Copyright © 2020-2023  润新知