UVa 10010
2011-10-27 00:11
246 查看
大多是饶立写的
AC代码:
AC代码:
//Problem:UVa 10010 //Data:2011-10-26 #include <iostream> #include <cctype> #include <cstring> using namespace std; //表格长宽 int m,n; // 保存最终查找到的位置。 int positionX; int positionY; //存储表格数据 char data[60][60]; //八个查找方向 int dx[] = {1, -1, 0, 0, -1, 1, 1, -1}; int dy[] = {1, -1, 1, -1, 0, 0, -1, 1}; // 判断是否可以取下一个字母 int ifCanNext(int x, int y) { if (x >= 0 && x < m && y >= 0 && y < n) return 1; else return 0; } void findPosition(char input[]) { int i, j, k; int inputLen = strlen(input); for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { for (k = 0; k < 8; k++) { char str[50]; str[0] = data[i][j]; int newx = i + dx[k]; int newy = j + dy[k]; int c = 1; while (ifCanNext(newx, newy)) { str[c++] = data[newx][newy]; if (c == inputLen) break; newx += dx[k]; newy += dy[k]; } str[c] = '\0'; if (strcmp(str, input) == 0) { positionX = i + 1; positionY = j + 1; return; } } } } return; } int main() { freopen("E:\\in.txt","r",stdin); int i,j; int t = 0; int N; // 测试实例 cin >> N; while(N--) { if(t != 0) cout << endl; t++; cin >> m >> n; //read the data[][] for(i=0; i<m; i++) { for(j=0; j<n; j++) { cin >> data[i][j]; data[i][j] = tolower(data[i][j]); } } int t; //test case cin >> t; while(t--) { char str[60]; cin >> str; int len = strlen(str); for (j = 0; j < len; j++) { str[j] = tolower(str[j]); } findPosition(str); cout << positionX << " " << positionY << endl; } } return 0; }
相关文章推荐
- UVA10010(八方向暴力枚举)
- UVA 10010 沃尔多夫在哪里
- uva 10010 Where's Waldorf?
- UVa Problem Solution: 10010 - Where's Waldorf
- UVa 10010 - Where's Waldorf?
- uva 10010 我的哪里错了呢。。。
- UVa 10010 Where's Waldorf?
- uva-10010 - Where's Waldorf?
- UVA10010 - Where's Waldorf?
- uva 10010 - Where's Waldorf?
- UVA 题目10010 - Where's Waldorf?
- UVa 10010 Where's Waldorf? (八方向字符串匹配&模板题)
- uva——10010
- UVa 10010
- UVA 10010 Where's Waldorf?
- UVA 10010 Where's Waldorf?
- UVA-10010的类似BFS做法
- uva10010--String
- 匹配行UVA 题目10010 - Where's Waldorf?
- UVa 10010 - Where's Waldorf?