zoukankan      html  css  js  c++  java
  • [POJ1598]Excuses, Excuses!(模拟)

    题目链接:http://poj.org/problem?id=1598

    题意:给一个词典,然后给一些字符串,问这些字符串里出现多少次词典中出现的词,输出包含最多的字符串(可有多个)。

    简单模拟,练手

     1 #include <algorithm>
     2 #include <iostream>
     3 #include <iomanip>
     4 #include <cstring>
     5 #include <climits>
     6 #include <complex>
     7 #include <cassert>
     8 #include <cstdio>
     9 #include <bitset>
    10 #include <vector>
    11 #include <deque>
    12 #include <queue>
    13 #include <stack>
    14 #include <ctime>
    15 #include <set>
    16 #include <map>
    17 #include <cmath>
    18 using namespace std;
    19 
    20 const int maxn = 55;
    21 const int maxm = 88;
    22 
    23 int k, e;
    24 set<string> ex;
    25 vector<pair<string, string> > s;
    26 int vis[maxn], ret;
    27 char tmp[maxm], buf[maxm];
    28 
    29 void gao(string cur, int pos) {
    30     int tt = 0;
    31     int l = 0, r = 0;
    32     while(r < cur.length()) {
    33         while(cur[r] == ' ') r++;
    34         l = r;
    35         while(cur[r] != ' ' && r < cur.length()) r++;
    36         int p = 0;
    37         memset(buf, 0, sizeof(buf));
    38         for(int i = l; i < r; i++) buf[p++] = cur[i];
    39         if(ex.find(buf) != ex.end()) tt++;
    40         l = r;
    41     }
    42     vis[pos] = tt;
    43     if(ret < tt) ret = tt;
    44 }
    45 
    46 int main() {
    47     // freopen("in", "r", stdin);
    48     int _ = 1;
    49     while(~scanf("%d%d",&k,&e)) {
    50         ex.clear(); s.clear();
    51         for(int i = 0; i < k; i++) {
    52             scanf("%s", tmp);
    53             ex.insert(tmp);
    54         }
    55         getchar();
    56         for(int i = 0; i < e; i++) {
    57             gets(tmp);
    58             memset(buf, 0, sizeof(buf));
    59             int p = 0;
    60             for(int j = 0; tmp[j]; j++) {
    61                 if(tmp[j] >= 'A' && tmp[j] <= 'Z') buf[p++] = tmp[j] - 'A' + 'a';
    62                 else if(!(tmp[j] >= 'a' && tmp[j] <= 'z')) buf[p++] = ' ';
    63                 else buf[p++] = tmp[j];
    64             }
    65             s.push_back(pair<string, string>(tmp, buf));
    66         }
    67         memset(vis, 0, sizeof(vis));
    68         ret = 0;
    69         for(int i = 0; i < e; i++) gao(s[i].second, i);
    70         printf("Excuse Set #%d
    ", _++);
    71         for(int i = 0; i < e; i++) {
    72             if(vis[i] == ret) cout << s[i].first << endl;
    73         }
    74         printf("
    ");
    75     }
    76     return 0;
    77 }
  • 相关阅读:
    【Css】SCSS基本语法
    【Css】Scss 与 Sass 简单示例
    【移动端】cordova在app中打开外部链接——cordova-plugin-inappbrowser
    border-radius圆角边框属性讲解
    css 设置 transform 无效
    linux下设置php执行命令
    linux下php命令无法使用如何解决
    微信小程序 --- 表单输入验证(手机号、邮箱验证、输入非空)
    微信小程序倒计时组件开发
    小程序--三级联动
  • 原文地址:https://www.cnblogs.com/kirai/p/6437995.html
Copyright © 2011-2022 走看看