• 409 Excuses, Excuses!


    C++语言: Codee#25710
    001 /*
    002 +++++++++++++++++++++++++++++++++++++++
    003                 author: chm
    004 +++++++++++++++++++++++++++++++++++++++
    005 */
    006
    007 #include <map>
    008 #include <set>
    009 #include <list>
    010 #include <queue>
    011 #include <cmath>
    012 #include <stack>
    013 #include <bitset>
    014 #include <cstdio>
    015 #include <cctype>
    016 #include <vector>
    017 #include <cstdlib>
    018 #include <cstring>
    019 #include <fstream>
    020 #include <sstream>
    021 #include <iomanip>
    022 #include <iostream>
    023 #include <algorithm>
    024
    025 using namespace std;
    026
    027 FILE*            fin         = stdin;
    028 FILE*            fout         = stdout;
    029 const int        max_size     = 10086;
    030
    031 char excuses[99][99];
    032 char lower[99][99];
    033 char words[99][99];
    034
    035 typedef struct tag
    036 {
    037     int frq;
    038     int num;
    039 } Rec;
    040 Rec rec[99];
    041
    042 int    wordcount(char* source, char* str)
    043 {
    044     char* ptr = strstr(source, str);
    045     int tms = 0;
    046     int len = strlen(str);
    047
    048     while(ptr)
    049     {
    050         /*
    051         abc*cde*
    052         abc
    053         in this case,just check the tail
    054             */
    055         if(ptr == source && !isalpha(*(ptr + len)))
    056             ++tms;
    057         /*
    058         abc*cde*
    059             cde
    060         check the previous and next letter
    061             */
    062         else if(ptr != source &&
    063                 !isalpha(*(ptr - 1)) &&
    064                 !isalpha(*(ptr + len)))
    065             ++tms;
    066         ptr = strstr(ptr + 1, str);
    067     }
    068     return    tms;
    069 }
    070
    071 int cmp(const void* a, const void* b)
    072 {
    073     return ((Rec *)b)->frq -
    074            ((Rec *)a)->frq;
    075 }
    076
    077 int main()
    078 {
    079 #ifndef ONLINE_JUDGE
    080     freopen("c:\\in.txt", "r", stdin);
    081     fout = fopen("c:\\garage\\out.txt", "w");
    082 #endif
    083     int m, n;
    084     int cnt = 1;
    085
    086     while(scanf("%d%d\n", &m, &n) != EOF)
    087     {
    088         for(int i = 0; i < m; ++i)
    089             scanf("%s\n", words[i]);
    090         memset(rec, 0, sizeof(rec));
    091
    092         for(int i = 0; i < n; ++i)
    093         {
    094             fgets(excuses[i], sizeof(excuses[i]), stdin);
    095             for(int j = 0, len = strlen(excuses[i]);
    096                     j < len;
    097                     ++j)
    098                 lower[i][j] = tolower(excuses[i][j]);     //save excuses in lower case
    099             rec[i].num = i;
    100             for(int j = 0; j < m; ++j)                    // for every word search in excuses
    101                 rec[i].frq += wordcount(lower[i], words[j]);
    102         }
    103         qsort(rec, sizeof(rec) / sizeof(rec[0]), sizeof(rec[0]), cmp);
    104         fprintf(fout, "Excuse Set #%d\n", cnt++);
    105         int tmp = rec[0].frq;
    106         for(int i = 0; tmp == rec[i].frq; ++i)
    107             fprintf(fout, "%s", excuses[rec[i].num]);
    108         fprintf(fout, "\n");
    109     }
    110
    111 #ifndef ONLINE_JUDGE
    112     fclose(fout);
    113     system("c:\\garage\\check.exe");
    114     system("notepad c:\\garage\\out.txt");
    115 #endif
    116     return 0;
    117 }
  • 相关阅读:
    [Powershell]导出指定的定时计划任务
    [Powershell]发布基于.NET Framework的WebAPI和Job控制台程序项目
    [Powershell]使用Msbuild构建基于.NET Framework的WebAPI项目
    [最新].NET Core ORM 开源项目一览,持续更新
    【最新】Xmanager Power Suite 6.0 Build 0017
    Git抽取版本之间的差异,打包解压
    PuppeteerSharp+AngleSharp的爬虫实战之汽车之家数据抓取
    PostgreSql之在group by查询下拼接列字符串
    同事问如何判断同花顺,我用javascript的二维数组写了个简易demo
    Gitlab定义安全变量遇到无法转义的字符——感叹号
  • 原文地址:https://www.cnblogs.com/invisible/p/2376216.html
Copyright © 2020-2023  润新知