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?的更多相关文章

  1. RMQ算法 以及UVA 11235 Frequent Values(RMQ)

    RMQ算法 简单来说,RMQ算法是给定一组数据,求取区间[l,r]内的最大或最小值. 例如一组任意数据 5 6 8 1 3 11 45 78 59 66 4,求取区间(1,8)  内的最大值.数据量小 ...

  2. [算法练习] UVA 10420 - List of Conquests?

    UVA Online Judge 题目10420 - List of Conquests 问题描述: 题目很简单,给出一个出席宴会的人员列表,包括国籍和姓名(姓名完全没用).统计每个国家有多少人参加, ...

  3. 【KM算法】UVA 11383 Golden Tiger Claw

    题目大意 给你一个\(n×n\)的矩阵G,每个位置有一个权,求两个一维数组\(row\)和\(col\),使\(row[i] + col[j]\ge G[i][j]\),并且\(∑row+∑col\) ...

  4. (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO

    http://www.cnblogs.com/sxiszero/p/3618737.html 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年 ...

  5. 算法竞赛入门经典+挑战编程+USACO

    下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...

  6. UVA题目分类

    题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics ...

  7. 刘汝佳 算法竞赛-入门经典 第二部分 算法篇 第五章 1(String)

    第一题:401 - Palindromes UVA : http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8 ...

  8. ACM训练计划step 1 [非原创]

    (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成 ...

  9. UVA 10245 The Closest Pair Problem 最近点问题 分治算法

    题意,给出n个点的坐标,找出两点间最近的距离,如果小于10000就输出INFINITY. 纯暴力是会超时的,所以得另辟蹊径,用分治算法. 递归思路将点按坐标排序后,分成两块处理,最近的距离不是在两块中 ...

随机推荐

  1. #JAVA操作LDAP

    package com.wisdombud.unicom.monitor.ldap; import java.util.ArrayList; import org.slf4j.Logger; impo ...

  2. BestCoder Round #65 hdu5590(水题)

    ZYB's Biology Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  3. HDU 3666 THE MATRIX PROBLEM (差分约束)

    题意:给定一个最大400*400的矩阵,每次操作可以将某一行或某一列乘上一个数,问能否通过这样的操作使得矩阵内的每个数都在[L,R]的区间内. 析:再把题意说明白一点就是是否存在ai,bj,使得l&l ...

  4. 神经网络学习-问题(二)-scipy未正确安装报DLL找不到的问题

    问题如下: E:\project\DL\python\keras>python keras_sample.pyUsing Theano backend.Traceback (most recen ...

  5. cocos2d-x CCScale9Sprite

    转自:http://www.cocos2dev.com/?p=295 前段时间看CCEditBox的时候,发现里面有个利用9宫格图缩放图片的,也就是缩放带圆角的图片. 这个比较有用处,很多游戏中有很多 ...

  6. UVa Online Judge 工具網站

    UVa Online Judge 工具網站   UVa中译题uHuntAlgorithmist Lucky貓的ACM園地,Lucky貓的 ACM 中譯題目 Mirror UVa Online Judg ...

  7. 数据恢复软件使用经验-支持U盘,手机SD卡,硬盘数据,解决图片恢复后打不开的问题

    数据恢复软件使用经验-支持U盘,手机SD卡,硬盘数据.解决图片恢复后打不开的问题. 用过非常多数据恢复软件.最早EasyRecovery pro.恢复过U盘.手机SD卡,硬盘数据.但如今下载不了最新版 ...

  8. STL 案例分析

    #include <iostream> using namespace std; #include "string" #include <vector> # ...

  9. java_线程-锁

    package com.demo.test3; import java.util.concurrent.CountDownLatch; /** * @author QQ: 1236897 * */ / ...

  10. Java中数组的快排

    描述输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符.   输入 第一行输入一个数N,表示有N组测试数据.后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成, ...