uva 10010 - Where's Waldorf?

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=951 题意:给出一个由大小写字母组成的二维maze…给出k个询问。每个询问一个单词。问能否在maze中找到这个单词。不区分大小写。输出开头字母的坐标(从1开始)。如果有多组输出最上面的。如果还有多组,输出最左边的。数据保证至少有一组。 思路:直接找就好了。。。坑的地方是。。。格式。。数据组数之后会有一个空行。然后每两组读入数据之间会有一个空行。。输出的时候每两组数据之间也有一个空行。

我因为一直多输出了一个空行一直wa QAQ

=

  1/* ***********************************************
  2Author :111qqz
  3Created Time :2016年01月21日 星期四 14时52分51秒
  4File Name :code/uva/10010.cpp
  5************************************************ */
  6
  7#include <cstdio>
  8#include <cstring>
  9#include <iostream>
 10#include <algorithm>
 11#include <vector>
 12#include <queue>
 13#include <set>
 14#include <map>
 15#include <string>
 16#include <cmath>
 17#include <cstdlib>
 18#include <ctime>
 19#define fst first
 20#define sec second
 21#define lson l,m,rt<<1
 22#define rson m+1,r,rt<<1|1
 23#define ms(a,x) memset(a,x,sizeof(a))
 24typedef long long LL;
 25#define pi pair < int ,int >
 26#define MP make_pair
 27
 28using namespace std;
 29const double eps = 1E-8;
 30const int dx4[4]={1,0,0,-1};
 31const int dy4[4]={0,-1,1,0};
 32const int inf = 0x3f3f3f3f;
 33const int N=80;
 34int n,m;
 35char maze[N][N];
 36string spa;
 37int k;
 38char target[100];
 39char nouse[55];
 40
 41
 42bool hang( int x,int y,char tar[])
 43{
 44    int len = strlen(tar);
 45  //  cout<<"tar:"<<tar<<endl;
 46    if (y+len-1>=m) return false;
 47    int cnt = 0 ;
 48    for ( int j = y ; j < y+len; j++)
 49    {
 50	if (maze[x][j]!=tar[cnt])
 51	    return false;
 52	cnt++;
 53    }
 54
 55    cout<<x+1<<" "<<y+1<<endl;
 56    return true;
 57}
 58bool rhang( int x,int y,char tar[])
 59{
 60    int len = strlen(tar);
 61    if (y-len+1<0) return false;
 62    int cnt = 0 ;
 63    for ( int j = y ; j >=y-len+1 ; j-- )
 64    {
 65
 66	if (maze[x][j]!=tar[cnt])
 67	    return false;
 68	cnt++;
 69    }
 70    cout<<x+1<<" "<<y+1<<endl;
 71    return true;
 72}
 73
 74bool lie( int x,int y,char tar[])
 75{
 76    int len = strlen(tar);
 77    int cnt = 0 ;
 78    if (x+len-1>=n) return false;
 79    for ( int i = x ; i < x + len ; i++)
 80    {
 81	if (maze[i][y]!=tar[cnt])
 82	    return false;
 83	cnt++;
 84    }
 85
 86    cout<<x+1<<" "<<y+1<<endl;
 87    return true;
 88}
 89
 90bool rlie( int x,int y,char tar[])
 91{
 92    int len = strlen(tar);
 93    int cnt = 0 ;
 94    if (x-len+1<0) return  false;
 95    for ( int i = x ; i>=x-len+1 ; i --)
 96    {
 97	if (maze[i][y]!=tar[cnt]) return false;
 98	cnt++;
 99    }
100    cout<<x+1<<" "<<y+1<<endl;
101    return true;
102
103}
104
105bool zx( int x,int y, char tar[])
106{
107    int len = strlen(tar);
108    int cnt = 0;
109    if (y+len-1>=m||x+len-1>=n) return false;
110
111    for ( int i = x ; i < x+len ; i++)
112    {
113	if (maze[i][y+cnt]!=tar[cnt]) return false;
114	cnt++;
115    }
116    cout<<x+1<<" "<<y+1<<endl;
117    return true;
118
119}
120
121bool rzx ( int x,int y,char tar[])
122{
123    int len = strlen(tar);
124    int cnt = 0 ;
125    if (y-len+1<0||x-len+1<0) return false;
126    for ( int i = x ; i >= x-len+1 ; i--)
127    {
128	if (maze[i][y-cnt]!=tar[cnt]) return false;
129	cnt++;
130    }
131    cout<<x+1<<" "<<y+1<<endl;
132    return true;
133}
134bool fx( int x,int y,char tar[])
135{
136    int len = strlen(tar);
137    int cnt = 0 ; 
138    if (y-len+1<0||x+len-1>=m) return false;
139
140    for ( int i = x ; i < x+len ; i++)
141    {
142	if (maze[i][y-cnt]!=tar[cnt]) return false;
143	cnt++;
144    }
145    cout<<x+1<<" "<<y+1<<endl;
146    return true;
147}
148bool rfx( int x,int y,char tar[])
149{
150    int len = strlen(tar);
151    int cnt = 0 ;
152    if (x-len+1<0||y+len-1>=m) return false;
153
154    for ( int j = y ; j < y+len ; j++)
155    {
156	if (maze[x-cnt][y]!=tar[cnt]) return false;
157	cnt++;
158    }
159    cout<<x+1<<" "<<y+1<<endl;
160    return true;
161}
162
163int main()
164{
165	#ifndef  ONLINE_JUDGE 
166	freopen("code/in.txt","r",stdin);
167  #endif
168	int T;
169	scanf("%d",&T);
170	//getline(cin,spa);
171	scanf("*%s",nouse);
172	while (T--)
173	{
174	    scanf("%d%d",&n,&m); //习惯用n表示行。。。与题目相反。
175	    for  ( int i = 0 ;i  < n ; i++)
176	    {
177		scanf("%s",maze[i]);
178		for ( int j = 0 ; j < m ; j++)
179		{
180		    maze[i][j]=toupper(maze[i][j]);
181		}
182	    }
183
184	    //for ( int i = 0 ; i < n ; i++) cout<<maze[i]<<endl;
185
186	    scanf("%d",&k);
187
188	    while (k--)
189	    {
190		scanf("%s",target);
191		int len ;
192		len = strlen(target);
193		bool ok = false;
194		for (  int i = 0 ;i < len ; i++) target[i] = toupper(target[i]);
195	//	cout<<"target:"<<target<<endl;
196		for ( int i = 0 ; i < n ;i++)
197		{
198		    for ( int j = 0 ; j < m ; j++)
199		    {
200			if( rzx(i,j,target)||rlie(i,j,target)||rfx(i,j,target)||rhang(i,j,target)||hang(i,j,target)||fx(i,j,target)||lie(i,j,target)||zx(i,j,target)) 
201			{
202			    ok = true;
203			    break;
204			}
205		    }
206		    if (ok) break;
207		}
208	    }
209
210	    if (T!=0)
211	    {
212		scanf("*%s",nouse);
213		cout<<endl;
214	    }
215
216	}
217
218  #ifndef ONLINE_JUDGE  
219  fclose(stdin);
220  #endif
221    return 0;
222}