POJ 1501 Word-Search Wonder

来源:互联网 发布:淘宝买家账号信誉查询 编辑:程序博客网 时间:2024/04/30 09:38

搜索

数据强一点就过不了了

//============================================================================// Name : hello.cpp// Author : key// Version : 8// Copyright : Your copyright notice// Description : Hello World in C++, Ansi-style//============================================================================#include <iostream>#include <cstring>#include <cstdio>#include <cmath>#include <queue>#include <stack>#include <string>#include <algorithm>using namespace std;#define NUM_INF 0x7FFFFFFFint n;int dir[8][2] = {{-1,-1},{0,-1},{1,-1},{1,0},{1,1},{0,1},{-1,1},{-1,0}};char map[110][110];char str[110];int len;bool dfs(int i,int j,int p,int dirs){if(i<0||j<0||i>n-1||j>n-1)return false;if(map[i][j] != str[p])return false;if(p==len-1)return true;return dfs(i+dir[dirs][0],j+dir[dirs][1],p+1,dirs);}int main(){int i,j,k;int flat;while(scanf("%d",&n)!=EOF){for(i=0;i<n;i++){scanf("%s",&map[i]);}while(scanf("%s",str)!=EOF){len = strlen(str);flat = 0;if(str[0] == '0' && !str[1])break;for(i=0;i<n;i++){if(flat) break;for(j=0;j<n;j++){if(flat) break;for(k=0;k<8;k++){if(flat) break;if(dfs(i,j,0,k)){flat = 1;}if(flat) break;}if(flat) break;}if(flat) break;}i++;j++;// printf("%d %d\n",i,j);// printf("%d\n",k);int ii = i+(len-1)*dir[k][0];int jj = j+(len-1)*dir[k][1];// printf("%d %d\n",ii,jj);if(flat)printf("%d,%d %d,%d\n",i,j,ii,jj);elseprintf("Not found\n");}}return 0;}



原创粉丝点击