UVa 10010 沃尔多夫在那里
2014-01-25 00:09
288 查看
/*
解题思路:
此题略坑、有好多陷阱。
第一个是、一旦确定搜索方向,该条路径方向不可改变(所以不可以用BFS或者DFS遍历搜索)
第二个是、多组案例除最后一组外每组案例结尾有一个空行(这里错了超久、一直忽略)
题意:
找出最上最左边的输入单词首字母的横纵坐标位置、该位置可以有一条路径把输入的字符串全部找到
*/
解题思路:
此题略坑、有好多陷阱。
第一个是、一旦确定搜索方向,该条路径方向不可改变(所以不可以用BFS或者DFS遍历搜索)
第二个是、多组案例除最后一组外每组案例结尾有一个空行(这里错了超久、一直忽略)
题意:
找出最上最左边的输入单词首字母的横纵坐标位置、该位置可以有一条路径把输入的字符串全部找到
*/
#include <stdio.h> #include <string.h> #define A 60 #define B 10 int m,n; int flag,len; char map[ A ][ A ]; char match[ A ]; int dx[ B ] = { 1 , -1 , 0 , 0 , 1 , 1 , -1 , -1 }; int dy[ B ] = { 0 , 0 , 1 , -1 , 1 , -1 , 1 , -1 }; int queueX[ A ]; int queueY[ A ]; int p,q; void search( int xx , int yy ,int k) { char c1 = match[ q ] , c2; if( c1<='Z' && c1>='A' ) c2 = (char)(c1-'A'+'a'); else c2 = (char)(c1-'a'+'A'); if( q == len ) { flag = 1; return ; } if( xx+dx[k] < m && yy+dy[k] < n && xx+dx[k] >=0 && yy+dy[k] >=0 && ( map[ xx+dx[k] ][ yy+dy[k] ] == c1 || map[ xx+dx[k] ][ yy+dy[k] ] == c2 ) ) { q++; queueX[ p++ ] = xx+dx[k]; queueY[ p++ ] = yy +dy[k]; search( xx+dx[k] , yy+dy[k] , k ); if( flag ) return; q--; p--; } } int main( ) { int t; int i,j,k,l,o; char c1,c2; scanf("%d",&t); while( t-- ) { scanf("%d%d",&m,&n); for( i=0;i<m;i++ ) scanf("%s",&map[ i ] ); scanf("%d",&k); for( i=0;i<k;i++ ) { flag = p = q = 0; scanf("%s",match ); len = strlen( match ); for( j=0;j<m;j++ ) { for( l=0;l<n;l++ ) { c1 = match[ q ]; if( c1<='Z' && c1>='A' ) c2 = (char)(c1-'A'+'a'); else c2 = (char)(c1-'a'+'A'); if( map[ j ][ l ] == c1 || map[ j ][ l ] == c2 ) { queueX[ 0 ] = j; queueY[ 0 ] = l; q++; for(o=0;o<8;o++ ) search( j , l , o ); if( flag ) break; q--; } } if( flag ) break; } printf("%d %d\n",j+1,l+1); } if( t!=0 ) puts(""); } return 0; }
相关文章推荐
- UVA 10010 沃尔多夫在哪里
- UVA 10010 - Where's Waldorf? 题解
- uva 10010 Where's Waldorf?(字符串处理)
- uva 10010 Where's Waldorf?
- UVa-10010
- uva10010
- UVA 10010 - Where's Waldorf?
- UVa 10010 - Where's Waldorf? 解题报告
- UVa 10010 - Where's Waldorf?
- [算法练习] UVA-10010-Where's Waldorf?
- uva 10010
- UVA - 10010 Where's Waldorf?
- UVA 10010(查找字符串)
- uva 10010 Where's Waldorf?(DFS字符串查找)
- UVA 10010 Where's Waldorf?
- UVA 10010 (暑假-字符串(2) -A - Where's Waldorf?)
- UVA10010
- UVA 10010-- Where's Waldorf?
- uva 10010
- uva 10010 我的哪里错了呢。。。