UVA - 10010 Where's Waldorf?
来源:互联网 发布:犀牛软件分割模型 编辑:程序博客网 时间:2024/06/10 19:02
UVA - 10010 Where’s Waldorf?
写的很繁琐,代码很冗长。
题目大意:给一段字符串,作用类似棋盘,在这段字符串中找出给定字段最近的位置。
解题思路:暴力求,八个方向全写。先查首字母,找到相同的就查第二个字母在八个方向的哪个方向能对应,以此类推。
注意点:一开始没有考虑到所查找的字段只有一个字符的情况,这样,第二个字母就是’\0’,那么原先判断第二个字母是否相等时,只会找棋盘边界的位置了(’\0’对应’\0’)坑了很久很久。 QAQ
#include<iostream>#include<cstdio>#include<string.h>#include<ctype.h>using namespace std;int main() { int h , m , n , k , col, li; int i , j , g , l ; char s[10000][60] , sk[50][1000]; bool flag; cin >> h; while( h--) { cin >> m >> n; for( i = 0 ; i < m ; i++) { cin >> s[i]; for (j = 0; j < n ; j++ ) s[i][j] = tolower(s[i][j]); } cin >> k; for( i = 0 ; i < k; i++){ cin >> sk[i]; for (j = 0; j < strlen(sk[i]) ; j++ ) sk[i][j] = tolower(sk[i][j]); } for( g = 0 ; g < k ; g++ ) { l = 0 ; for( i = 0; i < m; i++ ) { for( j = 0; j < n ; j++) { if( sk[g][l] == s[i][j] ) { li = i+1; col = j+1;flag = 0; if( sk[g][l+1] == '\0') {flag = 1;goto one;} else{ if( sk[g][l+1] == s[i][j+1] ) { for( ; l < strlen(sk[g]) ;l++,j++) { if( sk[g][l] == s[i][j]) flag = 1; else { flag = 0;i = li-1 ; j = col - 1;l=0;break; } } if ( flag == 1 ) break; } if(sk[g][l+1] == s[i][j-1] ) { for(; l < strlen(sk[g]) ;l++,j-- ) { if( sk[g][l] == s[i][j]) flag = 1; else { flag = 0;i = li-1 ; j = col - 1;l=0;break; } } if ( flag == 1 ) break; } i = li-1 ; j = col - 1;l=0; if(sk[g][l+1] == s[i+1][j] ) { for(; l < strlen(sk[g]) ;l++,i++ ) { if( sk[g][l] == s[i][j]) flag = 1; else { flag = 0;i = li-1 ; j = col - 1;l=0;break; } } if ( flag == 1 ) break; } i = li-1 ; j = col - 1;l=0; if(sk[g][l+1] == s[i-1][j] ) { for(; l < strlen(sk[g]) ;l++, i--) { if( sk[g][l] == s[i][j]) flag = 1; else { flag = 0;i = li-1 ; j = col - 1;l=0;break; } } if ( flag == 1 ) break; } if(sk[g][l+1] == s[i+1][j+1] ) { for(; l < strlen(sk[g]) ;l++, j++, i++) { if( sk[g][l] == s[i][j]) flag = 1; else { flag = 0;i = li-1 ; j = col - 1;l=0;break; } } if ( flag == 1 ) break; } i = li-1 ; j = col - 1;l=0; if(sk[g][l+1] == s[i+1][j-1] ) { for(; l < strlen(sk[g]) ;l++, i++, j--) { if( sk[g][l] == s[i][j]) flag = 1; else { flag = 0;i = li-1 ; j = col - 1;l=0;break; } } if ( flag == 1 ) break; } i = li-1 ; j = col - 1;l=0; if(sk[g][l+1] == s[i-1][j+1] ) { for(; l < strlen(sk[g]) ;l++, i-- ,j++ ) { if( sk[g][l] == s[i][j]) flag = 1; else { flag = 0;i = li-1 ; j = col - 1;l=0;break; } } if ( flag == 1 ) break; } if(sk[g][l+1] == s[i-1][j-1] ) { for(; l < strlen(sk[g]) ;l++, i--,j--) { if( sk[g][l] == s[i][j]) flag = 1; else { flag = 0;i = li-1 ; j = col - 1;l=0;break; } } if(flag == 1) break; } } } if(!flag) continue; } } one: if(flag) cout << li << " " << col<<endl; if(h&&!(k-g-1)) cout << endl; } //cout<<"lll"<<endl; } return 0;}
0 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
- java 存储空间 简单分析
- 对象作为返回值 、属性 异常处理 NSString的常用方法
- 匿名对象 、面向对象的三大特征、 getter ,setter方法 self的用法
- UVA - 537 Artificial Intelligence?
- 继承 多态 封装 NSObject类 super关键字 里氏替换 原则 SEL数据 Class
- UVA - 10010 Where's Waldorf?
- UVA - 409 Excuses, Excuses!
- NodeJs——(17)myblog的优化【2】用fs模块来记录访问情况
- UVA - 10115 Automatic Editing
- UVA - 10815 Andy's First Dictionary
- 51Nod-1105-第K大的数
- UVA - 10106 Product
- UVA - 424 Integer Inquiry
- UVA - 465 Overflow