[算法练习] UVA-10010-Where's Waldorf?
UVA Online Judge 题目10010 Where's Waldorf? Waldorf在哪?
问题描述:
给出一个m行n列的字符矩阵(),和一个单词列表,在矩阵上匹配每个单词。在矩阵上匹配单词包含八个方向(上、下、左、右、左上、左下、右上、右下),单词匹配成功后输出第一个字符的坐标。
输入格式:
第一行是一个整数,表示案例的个数。第二行是一个空行,每个案例的输入前都有一个空行。
第三行是第一个案例的m和n,,表示接下来的矩阵有m行n列。接下来m行是矩阵的数据。
矩阵数据输入完之后是一个整数,表示该次案例需要匹配的单词个数k(),接下来k行既是k个单词。
输出格式:
针对每一个需要搜索的单词匹配成功后输出首字母的坐标,同一列有多个位置匹配成功则输出最靠上方的,同一行有多个位置匹配成功的则输出最靠左的一个(也就是说:我们只需要按列循环匹配,列内从小到大匹配即可)。
注意:每个例子中间需要间隔一行,最后一个例子后面没有空行。
示例输入:
abcDEFGhigg
hEbkWalDork
FtyAwaldORm
FtsimrLqsrc
byoArBeDeyv
Klcbqwikomk
strEBGadhrb
yUiqlxcnBjf Waldorf
Bambi
Betty
Dagbert
示例输出:
代码:(局部变量覆盖上一层变量WA了一次。。)
/*
Problem : UVA Online Judge - 10010 Where's Waldorf?
Date:2014-04-03
Author:Leroy
*/ #include <stdio.h>
#include <string.h>
#include <ctype.h> char grid[][]; void findWord(int m, int n, char* str)
{
int len = strlen(str);
int x, y; for (x = ; x < m; x++)
{
for (y = ; y < n; y++)
{
if (grid[x][y] == str[])
{
for (int ix = -; ix <= ; ix++)
{
for (int iy = -; iy <= ; iy++)
{
if (!(ix == && iy == ))
{
int c = ;
for (; c < len; c++)
{
int cx = x + ix*c;
int cy = y + iy*c;
if (cx< || cy< || cx>(m-) || cy>(n-))
break;
if (grid[cx][cy] != str[c])
break;
}
if (c == len)
{
printf("%d %d\n", x+, y+);
return;
}
}
}
}
}
}
} } int main(){
int num;
scanf("%d", &num); for (int i = ; i < num; i++)
{
int m, n;
scanf("%d %d", &m, &n);
for (int j = ; j < m; j++)
{
scanf("%s", grid[j]);
for (int k = ; k < n; k++)
{
grid[j][k] = toupper(grid[j][k]);
}
} int wn;
char word[];
scanf("%d", &wn);
for (int j = ; j < wn; j++)
{
scanf("%s", word);
int k = ;
while (word[k] != '\0')
{
word[k] = toupper(word[k]);
k++;
}
findWord(m, n, word);
} if (i != num - )
printf("\n");
} return ;
}
[算法练习] UVA-10010-Where's Waldorf?的更多相关文章
- RMQ算法 以及UVA 11235 Frequent Values(RMQ)
RMQ算法 简单来说,RMQ算法是给定一组数据,求取区间[l,r]内的最大或最小值. 例如一组任意数据 5 6 8 1 3 11 45 78 59 66 4,求取区间(1,8) 内的最大值.数据量小 ...
- [算法练习] UVA 10420 - List of Conquests?
UVA Online Judge 题目10420 - List of Conquests 问题描述: 题目很简单,给出一个出席宴会的人员列表,包括国籍和姓名(姓名完全没用).统计每个国家有多少人参加, ...
- 【KM算法】UVA 11383 Golden Tiger Claw
题目大意 给你一个\(n×n\)的矩阵G,每个位置有一个权,求两个一维数组\(row\)和\(col\),使\(row[i] + col[j]\ge G[i][j]\),并且\(∑row+∑col\) ...
- (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO
http://www.cnblogs.com/sxiszero/p/3618737.html 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年 ...
- 算法竞赛入门经典+挑战编程+USACO
下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...
- UVA题目分类
题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics ...
- 刘汝佳 算法竞赛-入门经典 第二部分 算法篇 第五章 1(String)
第一题:401 - Palindromes UVA : http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8 ...
- ACM训练计划step 1 [非原创]
(Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成 ...
- UVA 10245 The Closest Pair Problem 最近点问题 分治算法
题意,给出n个点的坐标,找出两点间最近的距离,如果小于10000就输出INFINITY. 纯暴力是会超时的,所以得另辟蹊径,用分治算法. 递归思路将点按坐标排序后,分成两块处理,最近的距离不是在两块中 ...
随机推荐
- linux下查看端口的占用情况
前提:首先你必须知道,端口不是独立存在的,它是依附于进程的.某个进程开启,那么它对应的端口就开启了,进程关闭,则该端口也就关闭了.下次若某个进程再次开启,则相应的端口也再次开启.而不要纯粹的理解为关闭 ...
- LINUX的一些常用操作
CentOs6.7关闭防火墙(SecureCRT连接不上) 解决方法:______________________________________一.开启SSH以root用户登录Linux,打开终端, ...
- node-webkit
最近迷上了node-webkit工程.准备搜集并整理一些东西放在这里
- 关于H-Fox 函数
........We arrive at the following results which provide the sine and cosine transforms of the H-fun ...
- C#中反射的使用(How to use reflect in CSharp)(2)
在上一篇里,我们叨逼了好多如何获取到程序集里的对象,但是对象有了,还不知道怎么调,OK,下面开始干这个对象: 首先,我们对上一篇的对象做了一些修改,以适应多种情况: using System; usi ...
- sqlite3 多线程和锁 ,优化插入速度及性能优化
一. 是否支持多线程? SQLite官网上的"Is SQLite threadsafe?"这个问答. 简单来说,从3.3.1版本开始,它就是线程安全的了.而iOS的SQLite ...
- 【转】一个安全测试的CheckList
转自:http://hi.baidu.com/dontcry/item/90c2bc466558c217886d1075 不登录系统,直接输入登录后的页面的URL是否可以访问: 不登录系统,直接输入下 ...
- 放开Linux内核对用户进程可打开文件数和TCP连接的限制
一. 检查linux内核uname -alsb_release -a 二. 用户进程可打开文件数限制1) vim /etc/security/limits.conf* - nof ...
- mac上java开发环境
刚刚入手 macbook 还是 按照window 的方式,下载java,安装,配置环境变量,下载maven安装配置 等等....非常繁琐.. but 在mac上不用这么复杂...利用 brew 命令去 ...
- “WinMount”和“云端”真是相当好用!
WinMount作为一款压缩文件管理以及虚拟光驱工具已经无敌了.更有两项功能相当好用: 1.将rar.zip等压缩文件直接虚拟成磁盘,也就是下载一个7G的游戏可以不用解压直接安装了! 2.右键压缩文件 ...