UVa 123 快速查找

2024-06-19 09:18
文章标签 快速 查找 123 uva

本文主要是介绍UVa 123 快速查找,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/*

* 解题思路:

* 题目大意就是先给出一些单词,这些单词是不重要的,再给出一些句子,将句子中除去先前输入的不重要的单词其余单词存到一个数组中(单词不重复),排序,

*      按字典序,将重要单词数组中从第一个单词开始,分别到先前输入的句子数组中找,如果该句子中有该单词,输出该单词(除该单词大写外其他单词均小写)

*      如果一个句子中有多个该单词,则按输出例句

			a MAN is a man but bubblesort is a dog 
			a man is a MAN but bubblesort is a dog 

*     这样从左到右输出该重点单词即可

*      题目没有陷阱,按题目Sample输出即可

*/



#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
char s1[ 55 ][ 11 ],s2[ 205 ][ 100 ];
char s3[ 10005 ][ 20 ];
int p,q,r;
int cmp( const void *_a , const void *_b )
{char *a = (char *)_a;char *b = (char *)_b;return strcmp( a , b );
}
void Paint( int x , char temp[ ] ,int y ,int z )
{int i;for( i=0;i<z;i++ )printf("%c",tolower( s2[ x ][ i ] ) );for( i=0;i<y;i++ )printf("%c",toupper( temp[ i ] ) );for( i=z+y;i<strlen( s2[ x ] ) ;i++ )printf("%c",tolower( s2[ x ][ i ] ) );puts("");
}
void Find( int x )
{int i,j,k;char temp[ 20 ];for( i=0;i<q;i++ ){j = 0;while( j<strlen( s2[ i ] ) ){k = 0;while( s2[ i ][ j ] != ' ' &&  j<strlen( s2[ i ] ) )temp[ k++ ] = tolower( s2[ i ][ j++ ] );temp[ k ] = '\0';if( strcmp( s3[ x ] , temp ) == 0 )Paint( i , temp , k , j-k );j++;}}
}
void search( int x )
{int i,j,k,o;int flag;char temp[ 20 ];j = 0;while( j< strlen( s2[ x ] ) ){k = 0;while( s2[ x ][ j ] != ' ' && j < strlen( s2[ x ] ) )temp[ k++ ] = tolower( s2[ x ][ j++ ] );temp[ k ] = '\0';flag = 0;for( i=0;i<p;i++)if( strcmp( s1[ i ] , temp ) == 0 ){flag = 1;break;} if( !flag ) {   flag = 0;for( o=0;o<r;o++ )if( strcmp( s3[ o ] , temp ) == 0 ){flag = 1;break;}if( !flag )strcpy( s3[ r++ ] , temp ); }j++;}
}
int main( )
{int i,j;char c;p = 0;while( scanf("%s",&s1[ p ] ) && s1[ p ][ 0 ] != ':' ) p++;getchar( );q = 0;while(( c = getchar( ) ) != EOF ){i = 0;while( c!='\n' ){s2[ q ][ i++ ] = c;c = getchar( );}s2[ q ][ i ] = '\0';q++;}r = 0;for( i=0;i<q;i++ )search( i );qsort( s3 , r , sizeof( s3[ 0 ] ) , cmp );for( j=0;j<r;j++ )Find( j );return 0;
}



这篇关于UVa 123 快速查找的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1074621

相关文章

Python多线程实现大文件快速下载的代码实现

《Python多线程实现大文件快速下载的代码实现》在互联网时代,文件下载是日常操作之一,尤其是大文件,然而,网络条件不稳定或带宽有限时,下载速度会变得很慢,本文将介绍如何使用Python实现多线程下载... 目录引言一、多线程下载原理二、python实现多线程下载代码说明:三、实战案例四、注意事项五、总结引

C#高效实现Word文档内容查找与替换的6种方法

《C#高效实现Word文档内容查找与替换的6种方法》在日常文档处理工作中,尤其是面对大型Word文档时,手动查找、替换文本往往既耗时又容易出错,本文整理了C#查找与替换Word内容的6种方法,大家可以... 目录环境准备方法一:查找文本并替换为新文本方法二:使用正则表达式查找并替换文本方法三:将文本替换为图

C#使用Spire.XLS快速生成多表格Excel文件

《C#使用Spire.XLS快速生成多表格Excel文件》在日常开发中,我们经常需要将业务数据导出为结构清晰的Excel文件,本文将手把手教你使用Spire.XLS这个强大的.NET组件,只需几行C#... 目录一、Spire.XLS核心优势清单1.1 性能碾压:从3秒到0.5秒的质变1.2 批量操作的优雅

Python中高级文本模式匹配与查找技术指南

《Python中高级文本模式匹配与查找技术指南》文本处理是编程世界的永恒主题,而模式匹配则是文本处理的基石,本文将深度剖析PythonCookbook中的核心匹配技术,并结合实际工程案例展示其应用,希... 目录引言一、基础工具:字符串方法与序列匹配二、正则表达式:模式匹配的瑞士军刀2.1 re模块核心AP

Mybatis-Plus 3.5.12 分页拦截器消失的问题及快速解决方法

《Mybatis-Plus3.5.12分页拦截器消失的问题及快速解决方法》作为Java开发者,我们都爱用Mybatis-Plus简化CRUD操作,尤其是它的分页功能,几行代码就能搞定复杂的分页查询... 目录一、问题场景:分页拦截器突然 “失踪”二、问题根源:依赖拆分惹的祸三、解决办法:添加扩展依赖四、分页

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

使用Redis快速实现共享Session登录的详细步骤

《使用Redis快速实现共享Session登录的详细步骤》在Web开发中,Session通常用于存储用户的会话信息,允许用户在多个页面之间保持登录状态,Redis是一个开源的高性能键值数据库,广泛用于... 目录前言实现原理:步骤:使用Redis实现共享Session登录1. 引入Redis依赖2. 配置R

MySQL中查找重复值的实现

《MySQL中查找重复值的实现》查找重复值是一项常见需求,比如在数据清理、数据分析、数据质量检查等场景下,我们常常需要找出表中某列或多列的重复值,具有一定的参考价值,感兴趣的可以了解一下... 目录技术背景实现步骤方法一:使用GROUP BY和HAVING子句方法二:仅返回重复值方法三:返回完整记录方法四:

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热