UVa-Where's Waldorf?
忒恶心了,UVa不提示格式错误,格式错误直接WA。。。
C++代码:
#include <cstdio>
#include <utility>
#include <cstring>
using namespace std;
char s[100][100];
int m,n;
int len;
bool searchright(int a,int b,char name[])
{
int i=a,j=b;
if(b+len-1>=n)
return false;
for(;j<=b+len-1;++j)
if(s[i][j]!=name[j-b])
return false;
return true;
}
bool searchleft(int a,int b,char name[])
{
int i=a,j=b;
if(b-len+1<0)
return false;
for(;j>=b-len+1;--j)
if(s[i][j]!=name[b-j])
return false;
return true;
}
bool searchup(int a,int b, char name[])
{
int i=a,j=b;
if(a-len+1<0)
return false;
for(;i>=a-len+1;--i)
if(s[i][j]!=name[a-i])
return false;
return true;
}
bool searchdown(int a,int b, char name[])
{
int i=a,j=b;
if(a+len-1>=m)
return false;
for(;i<=a+len-1;++i)
if(s[i][j]!=name[i-a])
return false;
return true;
}
bool searchleftup(int a,int b,char name[])
{
int i=a,j=b;
if((i-len+1<0)||(j-len+1<0))
return false;
for(;i>=a-len+1;--i,--j)
if(s[i][j]!=name[a-i])
return false;
return true;
}
bool searchrightup(int a,int b,char name[])
{
int i=a,j=b;
if((i-len+1<0)||(b+len-1>=n))
return false;
for(;i>=a-len+1;--i,++j)
if(s[i][j]!=name[a-i])
return false;
return true;
}
bool searchleftdown(int a,int b,char name[])
{
int i=a,j=b;
if((i+len-1>=m)||(j-len+1<0))
return false;
for(;i<=a+len-1;++i,--j)
if(s[i][j]!=name[i-a])
return false;
return true;
}
bool searchrighdown(int a,int b,char name[])
{
int i=a,j=b;
if((i+len-1>=n)||(j+len-1>=n))
return false;
for(;i<=a+len-1;++i,++j)
if(s[i][j]!=name[i-a])
return false;
return true;
}
pair<int,int> search(char name[])
{
int i=0,j=0;
for(i=0;i<m;++i)
{
for(j=0;j<n;++j)
{
if(searchleft(i,j,name)||searchright(i,j,name)||searchup(i,j,name)||searchdown(i,j,name)||
searchleftup(i,j,name)||searchrightup(i,j,name)||searchleftdown(i,j,name)||searchrighdown(i,j,name))
goto loop;
}
}
loop:
return make_pair(i,j);
}
int main()
{
char name[100];
int cas;
while(scanf("%d",&cas)!=EOF)
{
while(cas--)
{
scanf("%d%d",&m,&n);
int i,j;
for(i=0;i<m;++i)
{
scanf("%s",s[i]);
for(j=0;s[i][j];++j)
if(s[i][j]>='A'&&s[i][j]<='Z')
s[i][j]=s[i][j]-'A'+'a';
}
int num;
scanf("%d",&num);
while(num--)
{
scanf("%s",name);
for(i=0;name[i];++i)
if(name[i]>='A'&&name[i]<='Z')
name[i]=name[i]-'A'+'a';
len=strlen(name);
pair<int,int> p=search(name);
printf("%d %d\n",p.first+1,p.second+1);
}
if(cas)
printf("\n");
}
}
return 0;
}
UVa-Where's Waldorf?的更多相关文章
- [算法练习] UVA-10010-Where's Waldorf?
UVA Online Judge 题目10010 Where's Waldorf? Waldorf在哪? 问题描述: 给出一个m行n列的字符矩阵(),和一个单词列表,在矩阵上匹配每个单词.在矩阵上匹 ...
- UVA大模拟代码(白书训练计划1)UVA 401,10010,10361,537,409,10878,10815,644,10115,424,10106,465,10494
白书一:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=64609#overview 注意UVA没有PE之类的,如果PE了显示WA. UVA ...
- uva 1354 Mobile Computing ——yhx
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5
- UVA 10564 Paths through the Hourglass[DP 打印]
UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...
- UVA 11404 Palindromic Subsequence[DP LCS 打印]
UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...
- UVA&&POJ离散概率与数学期望入门练习[4]
POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...
- UVA计数方法练习[3]
UVA - 11538 Chess Queen 题意:n*m放置两个互相攻击的后的方案数 分开讨论行 列 两条对角线 一个求和式 可以化简后计算 // // main.cpp // uva11538 ...
- UVA数学入门训练Round1[6]
UVA - 11388 GCD LCM 题意:输入g和l,找到a和b,gcd(a,b)=g,lacm(a,b)=l,a<b且a最小 g不能整除l时无解,否则一定g,l最小 #include &l ...
- UVA - 1625 Color Length[序列DP 代价计算技巧]
UVA - 1625 Color Length 白书 很明显f[i][j]表示第一个取到i第二个取到j的代价 问题在于代价的计算,并不知道每种颜色的开始和结束 和模拟赛那道环形DP很想,计算这 ...
- UVA - 10375 Choose and divide[唯一分解定理]
UVA - 10375 Choose and divide Choose and divide Time Limit: 1000MS Memory Limit: 65536K Total Subm ...
随机推荐
- 【软测试】(两)计算机组成原理-cpu
cpu,中文名称中央处理单元,central processing unit.系统的核心,用于数据的处理,算术以及逻辑运算和控制程序的运行. 组成 运算器 从字面上就能够理解到.运算器主要用来对于逻辑 ...
- C语言对mysql数据库的操作
原文:C语言对mysql数据库的操作 这已经是一相当老的话题.不过今天我才首次使用,把今天的一些体会写下来,也许能给一些新手带来一定的帮助,更重要的是供自己今后忘记的怎么使用而进行查阅的! 我们言归正 ...
- oracle 存储过程的基本语法
原文:oracle 存储过程的基本语法 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字( 参数1 IN NUMBER, 参数2 IN NUMBER) I ...
- Android小应用-----画画板
public class MainActivity extends Activity { private ImageView iv; float startX = 0; float startY = ...
- leetcode[105] Construct Binary Tree from Inorder and Postorder Traversal
代码实现:给定一个中序遍历和后序遍历怎么构造出这颗树!(假定树中没有重复的数字) 因为没有规定是左小右大的树,所以我们随意画一颗数,来进行判断应该是满足题意的. 3 / \ 2 4 /\ / \1 6 ...
- leetcode[87] Partition List
题目:给定一个链表和一个数x,将链表中比x小的放在前面,其他的放在后头.例如: Given 1->4->3->2->5->2 and x = 3,return 1-> ...
- Git的使用学习资源
开学第一天一般都挺认真的,认真做个功课. 跟据Ryan Tang的推荐,有两个比较好的学习Git的网站:http://git.gitcafe.com/book/zh 还有一个是CodeSchool的一 ...
- linux find命令之exec
find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了. exec解释: -exec 参数后面跟的是command ...
- Effective C++(18) 让接口更容易被正确使用,不易被误用
问题聚焦: 从这个条款开始,我们把注意力转移到软件设计和声明上来,具体的说就是,C++接口的设计和声明. 所谓软件设计,就是以一般习惯的构想开始,演变成细节的实现,最终开发针对性的特殊 ...
- Binder机制,从Java到C (大纲)
转载请标注:张小燕:http://www.cnblogs.com/zhangxinyan/p/3487381.html 前段时间一直在看有关Binder机制的内容,觉得受益匪浅,整理记录于此,大家请随 ...