zoukankan      html  css  js  c++  java
  • P1019 单词接龙

    这道单词拼写真的是很好的搜索题目
    还是用DFS进行搜索,用vis[i]表示是否用过,然后进行查找
    首先从给定的头开始进行dfs然后进行遍历每个单词
    1看这个单词是否用过
    2看这个单词是否可以连接上
    然后需要暴力一遍长度判断是否可以连接
    可以的话就进行连接,然后继续深搜下去
    否则话就回溯回来
    这里用string类进行加和操作很方便
    写判断函数就用我现在连接的这个函数最后k位置去比较如果可以就连接否则就不连接

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    using namespace std;
    string word[25];
    string beging;
    int ans;
    int vis[1000];
    int n;
    int add(string &a,string b,int k){
        int lenb=b.length();
        for (int i=k;i<lenb;i++){
            a+=b[i];
        }
    }
    int check(string a,string b,int k)
    {
      int lena=a.length();
        for (int i=0; i<k; i++)
        {
            if (a[i+lena-k]!=b[i])
            {
                return 0;
            }
        }
        return 1;
    }
    void dfs(string a)
    {
        int len=a.length();
        ans=max(len,ans);
        for (int i=1; i<=n; i++)
        {
            if (vis[i]>=2)
            {
                continue;
            }
            else
            {
                int len2=word[i].length();
                for (int j=1; j<=len2; j++)
                {
                    if (check(a,word[i],j))
                    {
                        string temp=a;
                        add(temp,word[i],j);
                        if (temp==a)
                        continue;
                        vis[i]++;
                        dfs(temp);
                        vis[i]--;
                    }
                }
            }
        }
    }
    int main()
    {
        ans=0;
        scanf("%d",&n);
        memset(vis,0,sizeof(vis));
        for (int i=1; i<=n; i++)
        {
            cin>>word[i];
        }
        cin>>beging;
        dfs(beging);
        cout<<ans<<endl;
        return 0;
    }
    

      

    有不懂欢迎咨询 QQ:1326487164(添加时记得备注)
  • 相关阅读:
    eas之排序接口
    eas中删除原来的监听事件添加新的监听事件
    eas之获取单据编码规则
    eas更改用户组织范围和业务组织范围
    ECMAScript 6 文档
    java网络编程介绍
    计算机网络-总结(三)
    Lombok包下常用注解
    计算机网络介绍(二)
    计算机网络介绍(一)
  • 原文地址:https://www.cnblogs.com/bluefly-hrbust/p/9440006.html
Copyright © 2011-2022 走看看