#includeusing namespace std; int n; string arr[21]; int vis[21]; int maxn; void dfs(string a,int x) { maxn=max(maxn,x);//取最大值 for(int i=1; i<=n; i++) { int p=1; int la=a.length(); int lb=arr[i].length(); while(p >n; for(int i=1; i<=n; i++) { cin>>arr[i]; } char t; cin>>t; for(int i=1; i<=n; i++) { if(arr[i][0]==t) {//寻找与字符匹配的 vis[i]++; dfs(arr[i],arr[i].length()); vis[i]--; } } cout< substr(int x);一个参数为截取此位置到末尾的
substr(int x1,int x2);x1为位置,x2为截取的长度
思路为dfs然后一块为找首字符相同的,一块为找字符相同的;


![P1019 [NOIP2000 提高组] 单词接龙c++ P1019 [NOIP2000 提高组] 单词接龙c++](http://www.mshxw.com/aiimages/31/861569.png)
