uva10010 - Where's Waldorf?
2012-06-05 11:34
337 查看
题意 在一个二维的字符数组中!找到给你单词的开头字母的位置!搜索方向是八个方向!注意只能是沿直线搜索不能跳跃!
连接:点击打开链接
算法!模拟+单向DFS
连接:点击打开链接
算法!模拟+单向DFS
#include <stdio.h> #include <string.h> char map[100][100]; void initilalize ( const int n, const int m ) { for ( int i = 1; i <= n; i++ ) for ( int j = 1; j <= m; j++ ) if ( 'A' <= map[i][j] && map[i][j] <= 'Z' ) map[i][j] += 'a' - 'A'; } void find ( char str[], const int n, const int m ) { int len = strlen ( str ), i; for ( i = 0; i < len; i++ ) if ( 'A' <= str[i] && str[i] <= 'Z' ) str[i] += 'a' - 'A'; for ( i = 1; i <= n; i++ ) for ( int j = 1; j <= m; j++ ) { if ( map[i][j] != str[0] ) continue; int x = i, y = j, flag[8] = {0}, k = 1; while ( map[x+1][y+1] == str[k] && k < len ) { flag[0]++; k++; x++; y++; } x = i; y = j; k = 1; while ( map[x][y+1] == str[k] && k < len ) { flag[1]++; k++; y++; } x = i; y = j; k = 1; while ( map[x-1][y+1] == str[k] && k < len ) { flag[2]++; x--; k++; y++; } x = i; y = j; k = 1; while ( map[x-1][y] == str[k] && k < len ) { flag[3]++; k++; x--; } x = i; y = j; k = 1; while ( map[x-1][y-1] == str[k] && k < len ) { flag[4]++; k++; x--; y--; } x = i; y = j; k = 1; while ( map[x][y-1] == str[k] && k < len ) { flag[5]++; k++; y--; } x = i; y = j; k = 1; while ( map[x+1][y-1] == str[k] && k < len ) { flag[1]++; k++; y--; x++; } x = i; y = j; k = 1; while ( map[x+1][y] == str[k] && k < len ) { flag[1]++; k++; x++; } for ( k = 0; k < 8; k++ ) if ( flag[k] == len - 1 ) { printf ( "%d %d\n", i, j ); return ; } } } int main ( ) { int t; scanf ( "%d", &t ); while ( t-- ) { int n, m; scanf ( "%d%d", &n, &m ); memset ( map, '*', sizeof map ); for ( int i = 1; i <= n; i++ ) scanf ( "%s", map[i]+1 ); initilalize ( n, m ); int cont; scanf ( "%d", &cont ); while ( cont -- ) { char str[100]; scanf ( "%s", str ); find ( str, n, m ); } if ( t ) puts ( "" ); } return 0; }
相关文章推荐
- UVa 10010 - Where's Waldorf?
- uva 10010 Where's Waldorf?
- UVA 10010 Where's Waldorf?
- UVA 10010 Where's Waldorf?
- UVa 10010 - Where's Waldorf?
- UVa: 10010 - Where's Waldorf?
- uva 10010 Where's Waldorf?(字符串处理)
- UVA 10010 Where's Waldorf?
- UVA 10010 - Where's Waldorf?(字符串)
- UVA - 10010 Where's Waldorf?
- UVA 10010 Where's Waldorf?
- UVA 题目10010 - Where's Waldorf?
- UVA 10010 Where's Waldorf?
- UVA - 10010 Where's Waldorf?
- UVA 之10010 - Where's Waldorf?
- uva_10010_Where's Waldorf?
- UVa 10010 - Where's Waldorf?
- uva - 10010 - Where's Waldorf?
- uva 10010 Where's Waldorf?
- UVa 10010 Where's Waldorf? (八方向字符串匹配&模板题)