Description
相信大家都玩过成语接龙吧,现在我们来玩一个单词接龙的游戏。游戏是在一个单词表上进行的,我们定义单词B可以接在单词A后,当且仅当A是B的前缀且B不等于A。考察如下的单词表:i、in、ix、int,一共有i->in、i->ix、i->int、in->int共4种接法。
现在给定一个单词表,求出这个单词表可以构成的最长单词串包含的单词个数。
Input
输入包含多组测试数据。
首先第一行输入一个数T(T<=50),表示总共有T组测试数据。
接下来是每组测试数据,第一行是一个数N(1<=N<=200),表示该单词表有N个单词。然后接下来的N行,每行一个单词(每个单词的长度<=200)。
Output
首先,输出Case #X:其中X代表是第X组数据(具体格式参照样例)。
对于每组测试数据,输出最长的单词串包含的单词个数。
Sample Input
1
5
i
in
ix
int
inty
Sample Output
Case #1:
4
水题,原理和最大递增子序列一样,dp[i]表示最后一个单词为a[i]的最长单词串
代码:
#include<iostream> #include<string> using namespace std; #define N 205 char a[N][N]; int dp[N]; int main() { int t,cnt=1; scanf("%d\n",&t); while(t--) { int n; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%s",a[i]); int max=1; for(int i=1;i<=n;i++) { dp[i]=1; int len1=strlen(a[i]); for(int j=1;j<i;j++) { int len2=strlen(a[j]); char b[N]; if(len1>len2) { memcpy(b,&a[i][0],len2*sizeof(char)); b[len2]=0; if(strcmp(a[j],b)==0&&dp[i]<dp[j]+1) dp[i]=dp[j]+1; } } max<dp[i]?max=dp[i]:max; } printf("Case #%d:\n%d\n",cnt++,max); } }
相关推荐
BOJ的题目1023. Ancient Keyboard解法 源代码
boj 上08 09 年复试模拟题的答案
boj:算法
JAVA_BOJ
Algorithm-BOJ.zip,BekJon在线法官(Java,Kotlin,SWIFT)和PS路线图,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。
BOJ
Algorithm-BOJ-PSJ.zip,Baykon在线判断JAVA问题解决方法(第二章),算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。
Algorithm-BOJ-AutoCommit.zip,当您解决baekjoon online judge的问题时,它会自动提交并推送到远程存储库。,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。
Algorithm-boj-auto-submit.zip,日本央行cli提交脚本,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。
资源分类:Python库 所属语言:Python 资源全名:boj-0.0.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
通过这本图画书展示您的创造力,其中包括Boj和朋友。 一本有趣的,全数字化且可重复使用的着色书,可用于 通过这本图画书展示您的创造力,其中包括Boj和朋友。 一本有趣的全数字可重复使用的图画书,专为孩子,父母...
解决问题 Boj.kr
欢迎来到PS_BOJ 이곳은... J이한BOJ문제들의AC코드들이입니다。 안내 :check_mark: C ++ Python으로풀이합니다。 :check_mark: ++ C ++풀이하며 long long 필요하거나으으으으으으으으으끔씩만끔씩만끔씩만끔씩만...
BOJ:日本央行