题目了链接: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)
{
visit[i] -- ;
temp = dfs(i) ;
if(temp > cont)
cont = temp ;

该博客介绍了如何利用深度搜索解决NOIP2000年的单词接龙问题。博主提供了题目链接,并指出由于数据量不大,可以直接采用深度搜索策略。在构建图的过程中,博主强调了存储相邻单词间的关系,特别是它们的公共长度,并使用额外的数组跟踪每个单词的使用状态。代码实现细节也在内容中给出。
最低0.47元/天 解锁文章
397

被折叠的 条评论
为什么被折叠?



