UVA 10010(查找字符串)
2013-11-01 08:45
411 查看
题目链接:点击打开链接
题目大意:在一个字符矩阵中8个方向找所给的字符串
题目总结:1.学到了个新函数
函数名: tolower
功 能: 把字符转换成小写字母,非字母字符不做出处理
头文件:在VC6.0可以是ctype.h或者stdlib.h,常用ctype.h
用 法: int tolower(int c);
同理:toipper
2. 比较生疏的函数:
strcmp
所在头文件:string.h
功能:比较字符串s1和s2。
一般形式:strcmp(字符串1,字符串2)
说明:
当s1<s2时,返回为负数 注意不是-1
当s1==s2时,返回值= 0
当s1>s2时,返回正数 注意不是1
注:c++ 中
当s1<s2时,返回为负数 注意不是-1
当s1==s2时,返回值等于0
当s1>s2时,返回正数 注意不是1
即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:
"A"<"B" "a">"A" "computer">"compare"
特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,不能比较数字等其他形式的参数。
方向始终用数组来表示更好,贴下人家的代码,自己写得太累赘了,学习下
题目大意:在一个字符矩阵中8个方向找所给的字符串
题目总结:1.学到了个新函数
函数名: tolower
功 能: 把字符转换成小写字母,非字母字符不做出处理
头文件:在VC6.0可以是ctype.h或者stdlib.h,常用ctype.h
用 法: int tolower(int c);
同理:toipper
2. 比较生疏的函数:
strcmp
所在头文件:string.h
功能:比较字符串s1和s2。
一般形式:strcmp(字符串1,字符串2)
说明:
当s1<s2时,返回为负数 注意不是-1
当s1==s2时,返回值= 0
当s1>s2时,返回正数 注意不是1
注:c++ 中
当s1<s2时,返回为负数 注意不是-1
当s1==s2时,返回值等于0
当s1>s2时,返回正数 注意不是1
即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:
"A"<"B" "a">"A" "computer">"compare"
特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,不能比较数字等其他形式的参数。
方向始终用数组来表示更好,贴下人家的代码,自己写得太累赘了,学习下
//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() { 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; }
相关文章推荐
- uva 10010 Where's Waldorf?(DFS字符串查找)
- UVA 10115 Automatic Editing (字符串的替换和查找)
- UVA 10010 - Where's Waldorf?(字符串)
- UVa 537 Artificial Intelligence? (字符串查找与匹配)
- uva 10010 Where's Waldorf?(字符串处理)
- UVA 10010 (暑假-字符串(2) -A - Where's Waldorf?)
- UVA 10010- Where's Waldorf?(八方向寻找字符串)
- UVa 10391 Compound Words(字符串+查找)
- uva 10010(字符串)
- QT4 在字符串中查找EMAIL地址(转贴增加一个处理方法)
- 字符串-01. 在字符串中查找指定字符(15)
- SQL 将ID字符串转换为int 类型方便查找
- [ python ] 列表和字符串的查找功能
- 将字符串写出文件,然后根据路径查找下载文件
- Excuses, Excuses!(字符串查找)
- 面试题:查找两个字符串的连续子串
- 【语言-C++】查找两串字符中 最长相等字符串
- 字符串查找
- UVa644-Immediate Decodability-字符串-难度2
- linux shell 字符串操作(长度,查找,替换)详解