日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UVa 208 Firetruck【回溯】

發(fā)布時(shí)間:2023/12/2 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UVa 208 Firetruck【回溯】 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題意:給出一個(gè)n個(gè)節(jié)點(diǎn)的無向圖,以及某個(gè)節(jié)點(diǎn)k,按照字典序從小到大輸出從節(jié)點(diǎn)1到節(jié)點(diǎn)k的所有路徑

看的題解

http://blog.csdn.net/hcbbt/article/details/9755147

因?yàn)楣?jié)點(diǎn)數(shù)很少(小于20),所以可以先用floyd處理一下,判斷一點(diǎn)是否能夠到達(dá)終點(diǎn)

然后就像紫書里面枚舉排列那樣的去挨個(gè)找出字典序從小到大的路徑

題解里面說到的無回溯的走遍和終點(diǎn)相連的所有點(diǎn),他寫的代碼是判斷的d[en][i],判斷終點(diǎn)到i點(diǎn)是否可達(dá)

寫成d[i][en]也能過,因?yàn)槭菬o向圖

1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include <cmath> 5 #include<stack> 6 #include<vector> 7 #include<map> 8 #include<set> 9 #include<queue> 10 #include<algorithm> 11 using namespace std; 12 13 #define foreach(i,c) for (__typeof(c.begin()) i = c.begin(); i != c.end(); ++i) 14 15 typedef long long LL; 16 const int INF = (1<<30)-1; 17 const int mod=1000000007; 18 const int maxn=55; 19 20 int d[maxn][maxn],rute[maxn],vis[maxn]; 21 int en,n,ans; 22 23 void dfs(int x,int cnt){ 24 if(x==en){ 25 printf("1"); 26 for(int i=1;i<cnt-1;i++) printf(" %d",rute[i]); 27 printf(" %d\n",en); 28 ans++; 29 return; 30 } 31 32 for(int i=2;i<=n;i++){ 33 if(!vis[i]&&d[x][i]==1&&d[i][en]!=INF){ 34 rute[cnt]=i; 35 vis[i]=1; 36 dfs(i,cnt+1); 37 vis[i]=0; 38 } 39 } 40 } 41 42 43 int main(){ 44 int kase=0; 45 while(scanf("%d",&en)!=EOF){ 46 int u,v; 47 n=-1; 48 for(int i=1;i<=55;i++){ 49 for(int j=1;j<=55;j++) { 50 d[i][j]=INF; 51 } 52 } 53 54 while(scanf("%d %d",&u,&v)&&(u||v)){ 55 d[u][v]=d[v][u]=1; 56 n=max(max(u,v),n);//找出這張圖里面最大的點(diǎn)的標(biāo)號(hào) 57 } 58 59 for(int k=1;k<=n;k++) 60 for(int i=1;i<=n;i++) 61 for(int j=1;j<=n;j++) 62 d[i][j]=min(d[i][j],d[i][k]+d[k][j]); 63 64 ans=0; 65 memset(vis,0,sizeof(vis)); 66 67 printf("CASE %d:\n", ++kase); 68 dfs(1,1); 69 printf("There are %d routes from the firestation to streetcorner %d.\n", ans, en); 70 } 71 return 0; 72 } View Code

?

?

?

?

?

?

?

?

?

?

?

?

?

不知道是不是真的理解了的說啊-----

加油啊---g00000000000

轉(zhuǎn)載于:https://www.cnblogs.com/wuyuewoniu/p/4480098.html

總結(jié)

以上是生活随笔為你收集整理的UVa 208 Firetruck【回溯】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。