• 牛客算法周周练7-A-收集纸片-dfs解决图的路径问题


    中文题。

    这题我写了半个小时。。。

    我是真的菜

    我只想到bfs、枚举暴力、最小生成树。

    dfs很关键,多练练吧。

    AC代码:

     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<map>
     4 #include<algorithm>
     5 #include<queue>
     6 #include<stack>
     7 #include<cmath>
     8 #include<string.h>
     9 
    10 using namespace std;
    11 #define mem(p,b) memset(p,b,sizeof(p))
    12 #define inf 0x3f3f3f3f
    13 typedef long long ll;
    14 
    15 const int N=150;
    16 struct node
    17 {
    18     int x,y;
    19 }a[N];
    20 bool book[N];
    21 int roomx,roomy,myx,myy,n,ans;
    22 
    23 int d(int x1,int y1,int x2,int y2)
    24 {
    25     return abs(x2-x1)+abs(y2-y1);
    26 }
    27 
    28 void dfs(int cnt,int x,int y,int minn)
    29 {
    30     if(cnt==n)
    31     {
    32         minn=minn+d(myx,myy,x,y);
    33         ans=min(ans,minn);
    34         return;
    35     }
    36     for(int i=1;i<=n;i++)
    37     {
    38         if(!book[i])
    39         {
    40             book[i]=1;
    41             int len=minn+d(x,y,a[i].x,a[i].y);
    42             dfs(cnt+1,a[i].x,a[i].y,len);
    43             book[i]=0;
    44         }
    45     }
    46 }
    47 
    48 int main()
    49 {
    50     int T;
    51     scanf("%d",&T);
    52     while(T--)
    53     {
    54         mem(book,0);
    55         scanf("%d %d",&roomx,&roomy);
    56         scanf("%d %d",&myx,&myy);
    57         scanf("%d",&n);
    58         for(int i=1;i<=n;i++)
    59             scanf("%d %d",&a[i].x,&a[i].y);
    60         ans=inf;
    61         dfs(0,myx,myy,0);
    62         printf("The shortest path has length %d
    ",ans);
    63     }
    64     return 0;
    65 }
    View Code
  • 相关阅读:
    c++ 优化的动态数组 Vector
    C++ 重载赋值运算符
    k8s中引入外部服务
    MySQL----mysql_secure_installation 安全配置向导
    elk参考连接
    限制不同的用户操作k8s的资源
    tcpdump 抓包命令使用教程
    日志管理——rsyslog、logrotate
    lsyncd配置文件详细说明
    Systemd 服务配置文件(转载)
  • 原文地址:https://www.cnblogs.com/OFSHK/p/12919688.html
Copyright © 2020-2023  润新知