uva - 123 - Searching Quickly
题目大意:
输入一系列要被忽视的单词和题目,题目中除了要被忽视的单词外其他的都是关键字。把关键字忽略大小写按字典序排序。再把题目按照关键字的字典序输出。有几个关键字输出几次(看题目中样例)。输出的时候那个关键字大写,其他都小写。
解题思路:
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相关推荐
- STL --- UVA 123 Searching Quickly
UVA - 123 Searching Quickly Problem's Link: http://acm.hust.edu.cn/vjudge/problem/viewProblem.acti ...
- UVa Problem 123 - Searching Quickly
// UVa Problem 123 - Searching Quickly // Verdict: Accepted // Submission Date: 2012-01-04 // UVa Ru ...
- 湖南省第八届大学生程序设计大赛原题 D - 平方根大搜索 UVA 12505 - Searching in sqrt(n)...
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=30746#problem/D D - 平方根大搜索 UVA12505 - Searchin ...
- UVa 11044 - Searching for Nessy
求n*m的网格中有多少九宫格,公式:(n/3)*(m/3). 代码: 1 #include<iostream> 2 3 using namespace std; 4 5 int main( ...
- 提取了下刘汝佳推荐的题号...
今天闲来没事上uva oj提取了下刘汝佳推荐的acm题号,原始数据如下: Volume 0. Getting Started 10055 - Hashmat the Brave Warrior ...
- UVa Online Judge 工具網站
UVa Online Judge 工具網站 转自http://www.csie.ntnu.edu.tw/~u91029/uva.html Lucky貓的ACM園地,Lucky貓的 ACM 中譯題目 M ...
- 初学者acm的练习题指南
上机练习题参考题 忘了在哪找的啦~~希望对大家有帮助呦 <!--[if !supportLists]-->1. <!--[endif]-->Programming Bas ...
- Competitive Programming 3题解
题目一览: Competitive Programming 3: The New Lower Bound of Programming Contests(1) Competitive Programm ...
- AOAPC I: Beginning Algorithm Contests 题解
AOAPC I: Beginning Algorithm Contests 题解 AOAPC I: Beginning Algorithm Contests (Rujia Liu) - Virtual ...
最新文章
- NASA:首批“太空蜜蜂”将赴空间站上班,助宇航员推进研究!
- Java黑皮书课后题第3章:*3.33(金融:比较成本)假设你要通过两种不同的包裹运输大米。你可能会编写一个程序来比较成本,该程序提示用户输入每个包裹的重量和价格,然后显示具有更优惠的包裹
- 从CLR GC到CoreCLR GC看.NET Core为云而生
- python中if __name__ == ‘__main__‘:的简单理解
- 滴滴java开发面试题_Java开发经典面试题(十二)
- Windows驱动程序的加载
- 上海大学计算机学院调剂,上海大学微电子学院2021年硕士研究生调剂有关事项说明...
- 【代码笔记】Web-ionic单选框
- 来自lombok的注解(解决idea中的找不到get,set方法,找不到log的问题)
- 最长单调递增子序列——动态规划
- 单片机毕业设计196例
- AIML框架 初探
- ubuntu16.04安装google拼音输入法
- 教你恢复电脑被删的照片或视频,方法实用可收藏
- 学习,不仅要知其然,更要知其所以然。
- 2017年微商行业八大趋势
- python小程序表白
- ({}+{}).length
- 华为MateBook E二合一笔记本发布:首次采用OLED原色屏
- 为什么我支持黄奇帆的建议,赞成取消住房公积金制度
热门文章
- android在线签名sdk,Android 微信 SDK 签名问题
- print out Fibonacci reversely
- C#之三十七 实体类
- 河南科技学院教务管理系统服务器,河南科技学院教务管理系统:http://jwc.hist.edu.cn...
- android bp文件_Android编译系统中的Android.bp【转】
- 代码实现全局消息钩子SetWindowsHookExA监视按键记录
- 计算2个拼音的相似度 PHP版本
- SQL SERVER数据库修复
- SSM框架实战详细教程(十四)贯穿项目实战之三层架构
- 学JAVA编程用什么电脑配置_学习编程,你真正需要的是什么样配置的电脑?