[NOIP2000]单词接龙

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目了链接: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 ;
  			
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值