luogu 题目选做

Posted mark-x

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了luogu 题目选做相关的知识,希望对你有一定的参考价值。

1025

P1019 单词接龙

往年的(noip)原题,纯搜索吧,没啥可讲的,直接暴力枚举,暴力判断就行

没有必要每次都存一个很大的字符串,只要存当前的字符串就行了

每个字符串可以用两次

不能包含关系。。。好像也没啥了吧

#include <bits/stdc++.h>
using namespace std;


const int N = 23;
int n , ans = -1 , v[N] ;
string str[N];

inline int check( string s1 , string s2)
{
    register bool flag;
    for( register int i = 1 ; i < min( s1.size() , s2.size() ) ; i ++ )
    {
        flag = 1;
        for( register int j = 0 ; j < i && flag ; j ++ )
        {
            if( s1[s1.size() - i + j ] != s2[j] ) flag  = 0;
        }
        if( flag ) return i;
    }
    return 0;
}

inline void dfs( string cur , int x )
{
    ans = max( ans , x );
    for( register int i = 1 , k ; i <= n ; i ++ )
    {
        if( v[i] >= 2 ) continue;
        k = check( cur , str[i] );
        if( k )
        {
            v[i] ++;
            dfs( str[i] , x + str[i].size() - k );
            v[i] --;
        }
    }
    return ;
}

int main()
{
    cin >> n;
    for( register int i = 1 ; i <= n + 1 ; i ++ ) cin >> str[i];
    dfs( ' ' + str[ n + 1 ] , 1 );
    cout << ans << endl;
    return 0;
}

以上是关于luogu 题目选做的主要内容,如果未能解决你的问题,请参考以下文章

第九次作业

jzyzoj题目选做

20175209 《MySort》和《IO-myhead》选做

20165201 课下作业第十周(选做)

201621123054《Java程序设计》第九周学习总结

20175325 实现mypwd(选做,加分)