博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[算法练习] UVA-10010-Where's Waldorf?
阅读量:5091 次
发布时间:2019-06-13

本文共 3022 字,大约阅读时间需要 10 分钟。

UVA Online Judge 题目10010 Where's Waldorf?  Waldorf在哪?

问题描述:

  给出一个m行n列的字符矩阵($1 \leq m,n \leq 20$),和一个单词列表,在矩阵上匹配每个单词。在矩阵上匹配单词包含八个方向(上、下、左、右、左上、左下、右上、右下),单词匹配成功后输出第一个字符的坐标。

输入格式:

  第一行是一个整数,表示案例的个数。第二行是一个空行,每个案例的输入前都有一个空行。

  第三行是第一个案例的m和n,$1 \leq m,n \leq 20$,表示接下来的矩阵有m行n列。接下来m行是矩阵的数据。

  矩阵数据输入完之后是一个整数,表示该次案例需要匹配的单词个数k($1 \leq k \leq 20$),接下来k行既是k个单词。

输出格式:

  针对每一个需要搜索的单词匹配成功后输出首字母的坐标,同一列有多个位置匹配成功则输出最靠上方的,同一行有多个位置匹配成功的则输出最靠左的一个(也就是说:我们只需要按列循环匹配,列内从小到大匹配即可)。

      注意:每个例子中间需要间隔一行,最后一个例子后面没有空行。

 

示例输入:

18 11abcDEFGhigghEbkWalDorkFtyAwaldORmFtsimrLqsrcbyoArBeDeyvKlcbqwikomkstrEBGadhrbyUiqlxcnBjf4WaldorfBambiBettyDagbert

 

示例输出:

2 52 31 27 8

 

 

 

代码:(局部变量覆盖上一层变量WA了一次。。)

1 /* 2     Problem : UVA Online Judge - 10010 Where's Waldorf? 3     Date:2014-04-03 4     Author:Leroy 5 */ 6  7 #include 
8 #include
9 #include
10 11 char grid[51][51];12 13 void findWord(int m, int n, char* str)14 {15 int len = strlen(str);16 int x, y;17 18 for (x = 0; x < m; x++)19 {20 for (y = 0; y < n; y++)21 {22 if (grid[x][y] == str[0])23 {24 for (int ix = -1; ix <= 1; ix++)25 {26 for (int iy = -1; iy <= 1; iy++)27 {28 if (!(ix == 0 && iy == 0))29 {30 int c = 1;31 for (; c < len; c++)32 {33 int cx = x + ix*c;34 int cy = y + iy*c;35 if (cx<0 || cy<0 || cx>(m-1) || cy>(n-1))36 break;37 if (grid[cx][cy] != str[c])38 break;39 }40 if (c == len)41 {42 printf("%d %d\n", x+1, y+1);43 return;44 }45 }46 }47 }48 }49 }50 }51 52 }53 54 int main(){55 int num;56 scanf("%d", &num);57 58 for (int i = 0; i < num; i++)59 {60 int m, n;61 scanf("%d %d", &m, &n);62 for (int j = 0; j < m; j++)63 {64 scanf("%s", grid[j]);65 for (int k = 0; k < n; k++)66 {67 grid[j][k] = toupper(grid[j][k]);68 }69 }70 71 int wn;72 char word[51];73 scanf("%d", &wn);74 for (int j = 0; j < wn; j++)75 {76 scanf("%s", word);77 int k = 0;78 while (word[k] != '\0')79 {80 word[k] = toupper(word[k]);81 k++;82 }83 findWord(m, n, word);84 }85 86 if (i != num - 1)87 printf("\n");88 }89 90 return 0;91 }

 

转载于:https://www.cnblogs.com/Leroy1245/p/Uva_Problem_10010.html

你可能感兴趣的文章
IdentityServer4-用EF配置Client(一)
查看>>
WPF中实现多选ComboBox控件
查看>>
读构建之法第四章第十七章有感
查看>>
Windows Phone开发(4):框架和页 转:http://blog.csdn.net/tcjiaan/article/details/7263146
查看>>
Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)【转】
查看>>
python asyncio 异步实现mongodb数据转xls文件
查看>>
TestNG入门
查看>>
【ul开发攻略】HTML5/CSS3菜单代码 阴影+发光+圆角
查看>>
IOS-图片操作集合
查看>>
IO—》Properties类&序列化流与反序列化流
查看>>
测试计划
查看>>
Mysql与Oracle 的对比
查看>>
jquery实现限制textarea输入字数
查看>>
Codeforces 719B Anatoly and Cockroaches
查看>>
jenkins常用插件汇总
查看>>
c# 泛型+反射
查看>>
第九章 前后查找
查看>>
Python学习资料
查看>>
jQuery 自定义函数
查看>>
jquery datagrid 后台获取datatable处理成正确的json字符串
查看>>