单词接龙【codevs】【黄金题】【深搜】

http://codevs.cn/problem/1018/

#include
#include 
#include
#include
using namespace std;

string a[21];int n;
int b[21][21];
string s;				//源操作字符 
mapmp;		//判断某个单词用了几次 
int len=0; 				//长度 
int ans=-1;				//结果 

void ini(){
	//输入
	cin>>n;
	for(int i=0;i>a[i];
		mp[a[i]]=0;
	}
	cin>>s;
	//写满b[][]
	for(int i=0;ilen?ans:len;
			dfs(i);
			len-=a[i].length()-b[index][i];
		}
	}
	mp[a[index]]--;
}

int main(){
	ini();
	
	for(int i=0;ilen?ans:len;//特别注意,有可能初始状态就是目的答案,需要特判一下0情况。 
			dfs(i);			
		}
	}
	cout<

 

你可能感兴趣的:(单词接龙【codevs】【黄金题】【深搜】)