這是一道尤拉路徑的問題
尤拉路徑:對於無向圖,當且僅當奇數度為0或2時,存在尤拉路徑,即可以不重複的經過每一條邊。
(1)當奇數度為0時,即所有節點的邊數都是偶數時,肯定能回來(n條邊,n/2條出來,n/2條回來),故叫做尤拉迴路
(2)當奇數度為2時,這兩個相應的奇數度節點一定乙個是起點,乙個是終點,否則做不到不重複的經過每一條邊。
*************************************
對於這題,可以把字母對拆開,
對於樣例:
4可拆成:a z t xaztz
xtax
然後連無向邊,比如az就把a和z連起來
計算節點的度數,相應的按照尤拉路徑來處理,
對於(1),可按照優先順序搜尋,儲存邊的vector可以排序,很方便
對於(2),設兩點為v u,如果v
注意:記錄使用的b陣列(或者說「used」陣列),是記錄邊的使用,不是節點的使用情況
如果記錄節點,那麼可能是az zt ta,這樣會炸的。
***************************************
#include
#include
#include
#include
#include
#define maxn 3005
#define maxm 65
using namespace std;
int n;
vectorg[maxm];
int b[maxm][maxm];
int ans[maxn];
int temp[maxm];
int cnt;
int dfs(int x,int k)
for(int i=0;i>x>>y;
x-='a'; y-='a';
if(x==y)
else
}
for(int i=0;i
OI刷題記錄
2014 4 18 poj3264 bzoj1699 balanced lineup rmq 2014 4 19 bzoj1012 jsoi2008 最大數maxnumber noi2004 鬱悶的出納員 bzoj3224 tyvj 1728 普通平衡樹 2014 4 20 bzoj1862 105...
面試刷題記錄
寫一段 判斷乙個包括 的表示式是否合法 注意看樣例的合法規則。給定乙個表示式a,請返回乙個bool值,代表它是否合法。測試樣例 a b 5 4 返回 true 測試樣例 a b 5 4 返回 false include vector include iostream using namespace ...
刷題記錄 2015 11 14
現在每天做的題都記錄一下,免得不知道自己在幹什麼。poj2406 用next陣列的定義求迴圈節 poj3261 字尾陣列 題 spoj705 同上,這題我wa了幾次,結果發現 我以為字串只有大寫字母,其實有小寫。如下 poj2406 author duyixian date 2015 11 14 1...