博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字符串搜索
阅读量:4879 次
发布时间:2019-06-11

本文共 1455 字,大约阅读时间需要 4 分钟。

#include
#include
#include
#include
using namespace std ;char grid[100][100] , word[100] ;int n , m ;int x[] = {-1 , -1 , -1 , 0 , 0 , 1 , 1 , 1} ;int y[] = {-1 , 0 , 1 , -1 , 1 , -1 , 0 , 1} ;int xx , yy ;void Search() { int len = strlen(word) , k ; for( int i = 0 ; i < n ; i++ ) for(int j = 0 ; j < m ; j++ ) { if(grid[i][j] == word[0]) { for(int ii = 0 ; ii < 8 ; ii++) { xx = i , yy = j ; for( k = 1 ; k < len ; k++) { xx = xx+x[ii] ; yy = yy+y[ii] ; if(xx < 0 || xx >= n || yy < 0 || yy >= m ) break ; if(grid[xx][yy] != word[k]) break ; } if(k == len) { xx = i , yy = j ; return ; } } } }}int main() { int N ; cin >> N ; int t = 0 ; while(N--) { if(t) printf("\n"); t = 1 ; cin >> n >> m ; int i , j , k ; for(i = 0 ; i < n ; i++) { for(j = 0 ; j < m ; j++) { char c ; cin >> c ; if(c >= 'A' && c <= 'Z') c += 32 ; grid[i][j] = c ; } } int t ; cin >> t ; for(i = 0 ; i < t ; i++) { cin >> word ; for(j = 0 ; j < strlen(word) ; j++) { if(word[j] >= 'A' && word[j] <= 'Z') word[j] += 32 ; } Search() ; cout << xx + 1 << " " << yy + 1 << endl ; } } return 0 ;}

 

在二维数组中存入字符,然后再输入一个字符串,在二维数组中查找字符串;

中间犯了一个错误,以为简单的BFS,其实不是这样的。

Process:

  首先在二维数组中找到字符串的首个字符,然后一直按照某个方向进行搜索,直到把整个字符串搜出来为止;

详细代码如下:

 

转载于:https://www.cnblogs.com/scottding/p/3651620.html

你可能感兴趣的文章
织梦字段属性筛选
查看>>
[Arduino] Leonardo 中文介绍
查看>>
无法加载csopenglc.dll;找不到指定模块
查看>>
08.路由规则中定义参数
查看>>
【转】虚拟机克隆之后,网卡名称从eth0变成eth1之后的解决办法
查看>>
Pandas截取列部分字符,并据此修改另一列的数据
查看>>
Android性能优化(2)
查看>>
java.lang.IllegalArgumentException
查看>>
pytest
查看>>
python爬取某个网站的图片并保存到本地
查看>>
【Spark】编程实战之模拟SparkRPC原理实现自定义RPC
查看>>
关于Setup Factory 9的一些使用方法
查看>>
接口实现观察者模式
查看>>
网站Session 处理方式
查看>>
记开发个人图书收藏清单小程序开发(九)Web开发——新增图书信息
查看>>
四则运算完结篇
查看>>
poj3401二分图
查看>>
Objective-C中的类目,延展,协议
查看>>
Python标准模块--Iterators和Generators
查看>>
Introduction Sockets to Programming in C using TCP/IP
查看>>