Sgu 101 尤拉通路

2021-07-22 22:06:59 字數 944 閱讀 2948

題意:100個兩頭寫0-6的多公尺諾骨牌,要求排成1*2n的一列使得首尾相接的兩個數相同。

做法:把數看成點,骨牌看成邊,那就是求尤拉通路。要判奇度數是0或2個,以及一遍dfs判連通性。主要是找尤拉通路過程的dfs,是先遍歷然後回溯時記錄,正好就是尤拉迴路,這是因為若在一點上有環,那dfs回溯的順序正好ok。具體也不是太講的清楚,可以自己模擬下。

**:

#include 

using

namespace

std;

int n;

int tot;

int g[10][10];

struct noderec[105];

int ans[305];

bool vis1[10];

bool vis[10];

bool vis2[105];

void dfs1(int st)

}void dfs2(int st)

}}int main()

bool flag=true;

int cntji=0;

for(int i=0;i<=6;i++)

}if(!(cntji==0||cntji==2))flag=false;

//if(flag==false)printf("zz1\n");

memset(vis, false, sizeof(vis));

dfs1(st);

for(int i=0;i<=6;i++)

if(vis1[i]&&!vis[i])

//if(!flag)printf("zz2\n");

if(!flag)printf("no solution\n");

else

else

if(ans[i]==rec[j].y&&ans[i+1]==rec[j].x)}}

}}

SGU 101 Domino 尤拉路徑

n個多公尺諾骨牌,每個骨牌左右兩側分別有乙個0 6的整數 骨牌可以旋轉以調換其左右兩數 求一種把這些骨牌從左到右排列的方案,使得所有相鄰的兩數字相等 即左邊骨牌右側的數字等於右邊骨牌左側的數字 把數字當成點,骨牌當做邊。構成無向圖,求一發尤拉道路即可。無向圖求尤拉路徑還是很好寫的。尤拉路徑深入講解 ...

sgu 101 Domino 尤拉路徑 DFS

include include int n,e 11 11 num 11 t 0,flag struct nodec 101 d 101 void dfs int u,int num for int i 0 i 6 i if e u i 0 int main else if c i x d j y ...

Catenyms(尤拉通路)

題目 分析 根據題目的意思可以想到兩個方向 把字串當做點,兩點能形成接龍形式則連一條有向邊,這是問題變成求一條點不重複的路且經過每乙個點。這就像乙個路徑覆蓋問題,但是圖上各種多重邊讓筆者不知道怎麼搞所以放棄這個想法 把字串當做邊,以26個字母為頂點建圖,問題變成求邊不重複的路且經過每一條邊,顯然這是...