[算法练习] 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. 纯暴力是会超时的,所以得另辟蹊径,用分治算法. 递归思路将点按坐标排序后,分成两块处理,最近的距离不是在两块中 ...
随机推荐
- Rop 文件上传解决思路
由于服务请求报文是一个文本,无法直接传送二进制的文件内容,因此必须采用某种转换机制将二进制的文件内容转换为字符串.Rop 采用如下的方式对上传文件进行编码:<fileType>@<B ...
- CodeForces 706A Beru-taxi (数学计算,水题)
题意:给定一个固定位置,和 n 个点及移动速度,问你这些点最快到固定点的时间. 析:一个一个的算距离,然后算时间. 代码如下: #pragma comment(linker, "/STACK ...
- Serializable 剔除某些不想保存的字段 transient
示例: package cn.com.chinatelecom.mms.pojo; import java.io.Serializable; public class Person implement ...
- windows 花式装系统
目录 一.安装系统前准备 准备U盘 准备好一个制作启动盘的软件 准备系统镜像 二.接下来先制作启动盘(以微PE为例) 三.插上u盘,调BIOS(BIOS即基本输入输出系统) 四.进入PE 五.开始安装 ...
- hdu 4781 Assignment For Princess (2013ACMICPC 成都站 A)
http://acm.hdu.edu.cn/showproblem.php?pid=4781 由于题目太长,这里就不直接贴了,直接说大意吧. 题目大意:有一个n个点,m条边的有向图,每条边的权值分别为 ...
- Java中单例设计模式总结
两种单例常见的实现方式: 1:懒汉的设计模式,在第一次调用的时候才完成相关的初始化操作 懒汉式是典型的时间换空间,就是每次获取实例都会进行判断,看是否需要创建实例,浪费判断的时间.当然,如果一直没有人 ...
- Win7 不能安装 msi 解决办法
Win7 不能安装Setup.msi解决办法 解决方案如下: 新建一个文本文件,输入msiexec /i d:\Setup.msi (假设文件名为Setup.msi ,放在d盘根目录下,即是安装程序的 ...
- Codeforces Gym 100570 E. Palindrome Query Manacher
E. Palindrome QueryTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100570/pro ...
- URAL 1776 C - Anniversary Firework DP
C - Anniversary FireworkTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/c ...
- Codeforces Gym 100418A A - A+-B java高精度
A - A+-BTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.acti ...