zoukankan      html  css  js  c++  java
  • 牛客算法周周练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
  • 相关阅读:
    动态规划_树形DP
    动态规划_区间DP
    Git
    动态规划_状态机与状态压缩DP
    Mybatis
    3.UIViewController详解
    Flutter boost实现原理简介
    FFmpeg笔记(四)
    Xcode-FFmpeg环境搭建
    FFmpeg(一)
  • 原文地址:https://www.cnblogs.com/OFSHK/p/12919688.html
Copyright © 2011-2022 走看看