zoukankan      html  css  js  c++  java
  • SSLZYC 洛谷 P1433 吃奶酪

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


    思路:
    明显的DFS!
    这道题的思路是十分清晰的:
    1.读入,顺便用勾股定理求两点之间的距离。
    2.DFS,从(0,0)开始,搜索每一个点,将最短答案记录在minn里。
    EASY!


    代码:

    #include <cstdio>
    #include <iostream>
    #include <cmath>
    using namespace std;
    
    double a[101][101],x[101],y[101],minn;
    int n,t[101];
    
    void dfs(int x,int y,double k)  //DFS
    {
        if (y==n)  //已经把所有点走完
        {
            if (k<minn) minn=k;  //记录最短答案
            return;
        }
        if (k>=minn) return;  //剪枝
        for (int i=1;i<=n+1;i++)  //枚举一个点(加上(0,0)共有n+1个点)
         if (t[i]==0)  //没有走过
         {
             t[i]=1;
             dfs(i,y+1,k+a[x][i]);
             t[i]=0;
         } 
    }
    
    int main()
    {
        scanf("%d",&n);
        x[1]=0;
        y[1]=0;
        for (int i=2;i<=n+1;i++)
        {
            cin>>x[i]>>y[i];
            for (int j=1;j<i;j++)
             a[i][j]=a[j][i]=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));   //求距离
        } 
        t[1]=1;
        minn=2147483647;
        dfs(1,0,0);
        printf("%0.2lf\n",minn);
        return 0;
    } 
  • 相关阅读:
    vue cli 3 构建vue项目
    hadoop综合大作业
    理解Mapreduce
    熟悉常用的HBase操作
    常用的HDFS操作
    爬虫大作业
    数据结构化与保存
    爬取新闻
    网络爬虫基础练习
    Hadoop综合大作业
  • 原文地址:https://www.cnblogs.com/hello-tomorrow/p/9313082.html
Copyright © 2011-2022 走看看