题目了链接:http://www.rqnoj.cn/Problem_608.html
题目数据量不是很大,直接深度搜索即可。首先建立一个图,用于存储任意两个单词之间的关系,如果是一个单词中的若干尾字符是另一单词的前缀,则存储其公共长度。由于每个单词可用两次,所以需要用一个数组来记录使用情况。
代码如下:
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std ;
const int maxn = 25 ;
int map[maxn][maxn] ;
int n ;
char str[maxn][maxn] ;
int visit[maxn] ;
int cont ;
char c ;
void build() ;
int dfs(int) ;
int main()
{
scanf("%d" , &n) ;
int i ;
for(i = 0 ; i < n ; i ++)
{
scanf("%s" , &str[i]) ;
}
getchar() ;
scanf("%c" , &c) ;
build() ;
cont = 0 ;
int temp ;
for(i = 0 ; i < n ; i++)
{
if(str[i][0]==c)