牛客算法周周练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\n",ans); 63 } 64 return 0; 65 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」