问题标题: 1400 接龙游戏

0
0

0
已采纳
赵毅恒
赵毅恒
资深守护
资深守护

先定义一个结构体,然后进行一系列操作

函数代码如下:

struct sentence{
    string sen;
    int len;    
    int mark;
}a[21];
int sum,lenth=1,maxn=0;
int judge(string u,string i)
{
    int m=min(u.length(),i.length());
    for(int w=1;w<m;w++)
    {
        if(u.substr(u.length()-w)==i.substr(0,w)) return w;
    }
    return 0;
}
void dfs(string b)
{
    maxn=maxn<lenth?lenth:maxn;
    for(int i=1;i<=sum;i++)
    {
        if(a[i].mark<2)
        {
            a[i].mark++;
            if(judge(b,a[i].sen)>0)
            {
                int res=judge(b,a[i].sen);
                lenth=lenth+a[i].len-res;
                dfs(a[i].sen);
                lenth=lenth-a[i].len+res;
                res=0;
            }
        a[i].mark--;
        }
    }
}

 

0
我要回答