acwing 1117單詞接龍
單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲。
現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的「龍」,每個單詞最多被使用兩次。
在兩個單詞相連時,其重合部分合為一部分,例如 beast 和 astonish ,如果接成一條龍則變為 beastonish。
我們可以任意選擇重合部分的長度,但其長度必須大於等於1,且嚴格小於兩個串的長度,例如 at 和 atide 間不能相連。
輸入格式
輸入的第一行為乙個單獨的整數 n 表示單詞數,以下 n 行每行有乙個單詞(只含有大寫或小寫字母,長度不超過20),輸入的最後一行為乙個單個字元,表示「龍」開頭的字母。
你可以假定以此字母開頭的「龍」一定存在。
輸出格式
只需輸出以此字母開頭的最長的「龍」的長度。
資料範圍
n≤20
輸入樣例:5at
touch
cheat
choose
tact
a輸出樣例:
23提示
連成的「龍」為 atoucheatactactouchoose。
#include
using
namespace std;
const
int n =30;
string word[n]
;int g[n]
[n];
//第i和第j個單詞的最短連線段長度
int used[n]
;int res;
int n;
void
dfs(string s,
int u)
//當前的龍 和 龍尾部的單詞是第幾個
used[u]--;
//回溯
}int
main()
}
string a;
cin>>a;
for(
int i=
0;i(word[i][0
]== a[0]
)//判斷龍頭
dfs(word[i]
,i);
//從w[i]開始 當前用到i-th單詞
cout<}
acwing 1116馬走日
#include
using
namespace std;
const
int n =10;
bool st[n]
[n];
int dx=
;int dy=
;int x,y,n,m;
int ans;
void
dfs(
int x,
int y,
int cnt)
for(
int i=
0;i<
8;i++)}
}int
main()
}
搜尋剪枝DFS
tempter of the bone hdu1010 題意 給乙個圖,找出乙個看能否能在t的時間內從s到達d點 思路 bfs肯定不行,因為bfs找到的是最短時間的路徑,無法對在t時間點到達d點進行判斷 於是才想到了dfs,這個能把所有的情況遍歷一遍的演算法,雖然圖的長寬只有7,但是總是超時,這次終...
DFS搜尋 剪枝
hdu 5952 題意 給出一張無向圖,然後判斷這張圖中一共有多少個不同的大小為s的完全圖 完全圖的頂點數為s個 題目保證每個點的度不大於20。完全圖 n個點兩兩之間都有一條邊的圖叫完全圖。思路 由於頂點個數很少,而且每個點的度數最多是20,所以可以暴力優化,建圖,對於每個s點完全子圖,如果i點在子...
搜尋DFS演算法
dfs 深度搜尋法 1.首先確定深度或搜尋終點 2.利用函式遞迴 適當做回溯 缺點 難以找到最優解但占用記憶體小 例題1 oil deposits 經典連通塊問題 ac include include include using namespace std char tian 101 101 int...