zoukankan      html  css  js  c++  java
  • Eoj 1018. 单词的划分 (dfs)

    题面

    有一个很长的由小写字母组成字符串。为了便于对这个字符串进行分析,需要将它划分成若干个部分,每个部分称为一个单词。

    出于减少分析量的目的,我们希望划分出的单词数越少越好。你就是来完成这一划分工作的。

    输入格式
    第一行为一整数 T,表示有 T 组测试数据。

    每组测试数据第一行为一字符串。(长度小于 256)

    第二行为一整数 N。(1<=N<=100)

    以下 N 行,每行一个单词,每个单词长度小于 128。

    输出格式
    每组测试数据占一行 , 这一行只有一个整数,表示字符串可以被划分成的最少的单词数。我们保证单词是可划分的。

    样例
    input
    1
    realityour
    5
    real
    reality
    it
    your
    our
    output
    2

    思路

    dfs,从每个点开始爆搜,判断是不是单词集合中的元素,到字符串结尾返回结果。

    代码实现

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<queue>
    #include<cmath>
    using namespace std;
    const int maxn=110;
    const int inf=0x3f3f3f3f;
    string s;
    vector <string> cor;
    int t,n,ans=inf;
    
    bool find (string now) {
       for (int i=0;i<cor.size();i++) {
           if (now==cor[i]) return true;
       }    
       return false;
    }
    
    void dfs (int p,int sum) {
         if (p==s.size ()) {
             if (sum<ans) ans=sum;
         }
         else {
             for (int i=p;i<s.size ();i++) {
                 string str=s.substr (p,i-p+1);
                 if (find (str)) {
                     int q=i+1;
                     dfs (q,sum+1);
                 }
             }
         }
    }
    
    int main () {
    
         cin>>t;
         while (t--) {
           cin>>s; 
           ans=inf;
           cor.clear ();
           cin>>n;
           for (int i=1;i<=n;i++) {
               string a;
               cin>>a;
               cor.push_back (a);
           }
           dfs (0,0);
           cout<<ans<<endl;
         }
        return 0;
    }
    
  • 相关阅读:
    iOS7.0后隐藏状态栏(UIStatusBar)
    UITableView
    UIScrollView
    [IOS]edgesForExtendedLayout、automaticallyAdjustsScrollViewInsets
    UISearchController
    App开发流程之通用宏定义及头文件
    App开发流程之Xcode配置和本地化
    App开发流程之源代码Git管理
    App开发流程之增加预编译头文件
    App开发流程之配置Info.plist文件
  • 原文地址:https://www.cnblogs.com/hhlya/p/13374892.html
Copyright © 2011-2022 走看看