首页 > 代码库 > uva10010
uva10010
字符串搜索 可以暴力搜 主要是代码要精简点 参考了网上的代码优化后写出来的
ac代码
1 #include<iostream> 2 #include<cstring> 3 #include<cctype> 4 using namespace std; 5 int m,n; 6 int positionx; 7 int positiony; 8 char data[60][60]; 9 int dx[]={1,-1,0,0,-1,1,1,-1};10 int dy[]={1,-1,1,-1,0,0,-1,1};11 int ifcannext(int x,int y){12 if(x>=0&&x<m&&y>=0&&y<n)13 return 1;14 else return 0;15 }16 void findposition(char input[]){17 int i,j,k;18 int inputlen=strlen(input);19 for(i=0;i<m;i++){20 for(j=0;j<n;j++){21 if(data[i][j]!=input[0])22 continue;23 for(k=0;k<8;k++){24 char str[50];25 str[0]=data[i][j];26 int newx=i+dx[k];27 int newy=j+dy[k];28 int c=1;29 while(ifcannext(newx,newy)){30 str[c++]=data[newx][newy];31 if(c==inputlen) break;32 newx+=dx[k];33 newy+=dy[k];34 }35 str[c]=‘\0‘;36 if(strcmp(str,input)==0){37 positionx=i+1;38 positiony=j+1;39 return ;40 }41 }42 }43 }44 return ;45 }46 int main(){47 int i,j;48 int t=0;49 int N;50 cin>>N;51 while(N--){52 if(t!=0)53 cout<<endl;54 t++;55 cin>>m>>n;56 for(i=0;i<m;i++){57 for(j=0;j<n;j++){58 cin>>data[i][j];59 data[i][j]=tolower(data[i][j]);60 }61 }62 int t;63 cin>>t;64 while(t--){65 char str[60];66 cin>>str;67 int len=strlen(str);68 for(j=0;j<len;j++)69 str[j]=tolower(str[j]);70 findposition(str);71 cout<<positionx<<" "<<positiony<<endl;72 }73 }74 return 0;75 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。