题目大意:

输入一系列要被忽视的单词和题目,题目中除了要被忽视的单词外其他的都是关键字。把关键字忽略大小写按字典序排序。再把题目按照关键字的字典序输出。有几个关键字输出几次(看题目中样例)。输出的时候那个关键字大写,其他都小写。

解题思路:

1、输入转换大小写提取关键字。
2、关键字排序。
3、在题目中搜索关键字。
4、按照关键字大写,其他小写输出。

反思:

1、刚开始因为看了篇博客导致先入为主,一直认识WA是gets的原因,然后一直修改gets和扩大数组。其实原因是Search_2()的p写成了m(居然还可以通过那么多数据)。给了之后用fgets交了下AC了,然后不死心又用gets交了下同样AC。感觉在uva上两者功能应该没区别。
2、uva上数组不能起名ignore,关键字重复吧,但是程序可以跑起来。

找出错误的样例:

a
::
I am a Man
I am a mAn
I am a maN
i AM a ma
i AM a ma
i AM a ma
I am a ma
I am a ma
I am a ma
i am a MA
i am a MA
i am a MA

AC代码:

#define Local
#include <iostream>
#include <iomanip>
#include <string>
#include <cstring>
#include <cstdio>
#include <queue>
#include <stack>
#include <algorithm>
#include <cmath>using namespace std;#define MAX 10000 + 10
char ign[50][20], title[MAX][MAX], keyword[MAX][MAX];
int m, n, p; //m记录忽略单词的个数,n记录标题的个数,p是关键字数void Input()
{char s[MAX];while (fgets(s, MAX, stdin) != NULL){s[strlen(s)-1] = '\0';if (':' == s[0])break;strcpy(ign[m++], s);}while (fgets(s, MAX, stdin) != NULL){s[strlen(s)-1] = '\0';strcpy(title[n++], s);}
}void Strlwr()
{int i = 0, j = 0;for (i = 0; i < n; i++)for (j = 0; j < strlen(title[i]); j++)if (title[i][j] >= 'A' && title[i][j] <= 'Z')title[i][j]  += 'a' - 'A';
}int Search_1(char s[])
{int i = 0;for (i = 0; i < m; i++)//存在{if (!strcmp(s, ign[i]))return 0;}return 1;
}int Search_2(char s[])
{int i = 0;for (i = 0; i < p; i++)//好奇怪这一直写成m居然还能通过那么多样例。//存在{if (!strcmp(keyword[i], s))return 0;}return 1;
}void ExtractAndSearch(char s[], int num)
{int i = 0, j = 0;char temp[20];for (i = 0; i < strlen(s); i++){j = 0;memset(temp, '\0', sizeof(temp));while (' ' != s[i] && i < strlen(s)){temp[j++] = s[i++];}temp[j] = '\0';if (Search_1(temp) && Search_2(temp))//不存在的话{strcpy(keyword[p], temp);p++;}}
}int cmp(const void *a, const void *b)
{return strcmp((char *)a, (char *)b);
}void Output()
{int i = 0, j = 0, k = 0, l = 0;for (i = 0; i < p; i++)//关键字的个数 {for (j = 0; j < n; j++)//标题的数【j写成i】又是致命错误{char temp[20];int pos_1 = 0, pos_2 = 0;for (k = 0; k < strlen(title[j]); k++){l = 0;memset(temp, '\0', sizeof(temp));pos_1 = k;while (' ' != title[j][k] && k < strlen(title[j])){temp[l++] = title[j][k++];}temp[l] = '\0';pos_2 = k;if (!strcmp(keyword[i], temp)){for (l = pos_1; l < pos_2; l++)title[j][l] -= 'a' - 'A';puts(title[j]);for (l = pos_1; l < pos_2; l++)title[j][l] += 'a' - 'A';}}}}
}int main()
{
#ifdef Localfreopen("a.in", "r", stdin);freopen("a.out", "w", stdout);
#endifint i = 0, j = 0;Input();Strlwr();for (i = 0; i < n; i++)//提取单词 并查找插入{ExtractAndSearch(title[i], i);}qsort(keyword, p, sizeof(keyword[0]), cmp);Output();
}

uva - 123 - Searching Quickly相关推荐

  1. STL --- UVA 123 Searching Quickly

    UVA - 123 Searching Quickly Problem's Link:   http://acm.hust.edu.cn/vjudge/problem/viewProblem.acti ...

  2. UVa Problem 123 - Searching Quickly

    // UVa Problem 123 - Searching Quickly // Verdict: Accepted // Submission Date: 2012-01-04 // UVa Ru ...

  3. 湖南省第八届大学生程序设计大赛原题 D - 平方根大搜索 UVA 12505 - Searching in sqrt(n)...

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=30746#problem/D D - 平方根大搜索 UVA12505 - Searchin ...

  4. UVa 11044 - Searching for Nessy

    求n*m的网格中有多少九宫格,公式:(n/3)*(m/3). 代码: 1 #include<iostream> 2 3 using namespace std; 4 5 int main( ...

  5. 提取了下刘汝佳推荐的题号...

    今天闲来没事上uva oj提取了下刘汝佳推荐的acm题号,原始数据如下: Volume 0. Getting Started    10055 - Hashmat the Brave Warrior ...

  6. UVa Online Judge 工具網站

    UVa Online Judge 工具網站 转自http://www.csie.ntnu.edu.tw/~u91029/uva.html Lucky貓的ACM園地,Lucky貓的 ACM 中譯題目 M ...

  7. 初学者acm的练习题指南

    上机练习题参考题 忘了在哪找的啦~~希望对大家有帮助呦 <!--[if !supportLists]-->1.    <!--[endif]-->Programming Bas ...

  8. Competitive Programming 3题解

    题目一览: Competitive Programming 3: The New Lower Bound of Programming Contests(1) Competitive Programm ...

  9. AOAPC I: Beginning Algorithm Contests 题解

    AOAPC I: Beginning Algorithm Contests 题解 AOAPC I: Beginning Algorithm Contests (Rujia Liu) - Virtual ...

最新文章

  1. NASA:首批“太空蜜蜂”将赴空间站上班,助宇航员推进研究!
  2. Java黑皮书课后题第3章:*3.33(金融:比较成本)假设你要通过两种不同的包裹运输大米。你可能会编写一个程序来比较成本,该程序提示用户输入每个包裹的重量和价格,然后显示具有更优惠的包裹
  3. 从CLR GC到CoreCLR GC看.NET Core为云而生
  4. python中if __name__ == ‘__main__‘:的简单理解
  5. 滴滴java开发面试题_Java开发经典面试题(十二)
  6. Windows驱动程序的加载
  7. 上海大学计算机学院调剂,上海大学微电子学院2021年硕士研究生调剂有关事项说明...
  8. 【代码笔记】Web-ionic单选框
  9. 来自lombok的注解(解决idea中的找不到get,set方法,找不到log的问题)
  10. 最长单调递增子序列——动态规划
  11. 单片机毕业设计196例
  12. AIML框架 初探
  13. ubuntu16.04安装google拼音输入法
  14. 教你恢复电脑被删的照片或视频,方法实用可收藏
  15. 学习,不仅要知其然,更要知其所以然。
  16. 2017年微商行业八大趋势
  17. python小程序表白
  18. ({}+{}).length
  19. 华为MateBook E二合一笔记本发布:首次采用OLED原色屏
  20. 为什么我支持黄奇帆的建议,赞成取消住房公积金制度

热门文章

  1. android在线签名sdk,Android 微信 SDK 签名问题
  2. print out Fibonacci reversely
  3. C#之三十七 实体类
  4. 河南科技学院教务管理系统服务器,河南科技学院教务管理系统:http://jwc.hist.edu.cn...
  5. android bp文件_Android编译系统中的Android.bp【转】
  6. 代码实现全局消息钩子SetWindowsHookExA监视按键记录
  7. 计算2个拼音的相似度 PHP版本
  8. SQL SERVER数据库修复
  9. SSM框架实战详细教程(十四)贯穿项目实战之三层架构
  10. 学JAVA编程用什么电脑配置_学习编程,你真正需要的是什么样配置的电脑?