怎么制作博客网站,安徽黄山旅游攻略,域名 去掉wordpress,wordpress调用自定义菜单【华为OD】统一考试B\C卷真题#xff1a;100%通过#xff1a;找单词 C/C实现
目录
题目描述#xff1a;
示例1
解题思路#xff1a;
代码实现#xff1a; 题目描述#xff1a;
给一个字符串和一个二维字符数组#xff0c;如果该字符串存在于该数组中#xff0c;…【华为OD】统一考试B\C卷真题100%通过找单词 C/C实现
目录
题目描述
示例1
解题思路
代码实现 题目描述
给一个字符串和一个二维字符数组如果该字符串存在于该数组中则按字符串的字符顺序输出字符串每个字符所在单元格的位置下标字符串如果找不到返回字符串N。
1.需要按照字符串的字符组成顺序搜索且搜索到的位置必须是相邻单元格其中“相邻单元格”是指那些水平相邻或垂直相邻的单元格。
2.同一个单元格内的字母不允许被重复使用。
3.假定在数组中最多只存在一个可能的匹配。
输入描述
1.第1行为一个数字N指示二维数组在后续输入所占的行数。
2.第2行到第N1行输入为一个二维大写字符数组每行字符用半角,分割。
3.第N2行为待查找的字符串由大写字符组成。
4.二维数组的大小为N*N0N100。
5.单词长度K0K1000。
输出描述
输出一个位置下标字符串拼接格式为第1个字符行下标,第1个字符列下标,第2个字符行下标,第2个字符列下标...,第N个字符行下标,第N个字符列下标
示例1
输入输出示例仅供调试后台判题数据一般不包含示例
输入 4 A,C,C,F C,D,E,D B,E,S,S F,E,C,A ACCESS 输出 0,0,0,1,0,2,1,2,2,2,2,3 说明 ACCESS分别对应二维数组的[0,0] [0,1] [0,2] [1,2] [2,2] [2,3]下标位置 解题思路 使用递归的思想来实现即可
代码实现
#include iostream
#include sstream
#include string
#include vector
#include algorithm
using namespace std;bool g_state false;
void run(int r, int c, int idx, vectorvectorchar arr, string str, vectorvectorint datas) {if (r 0 r arr.size() c 0 c arr.size() !g_state arr[r][c] str[idx]) {datas[idx][0] r;datas[idx][1] c;if (idx str.size() - 1) {g_state true;return;}char old arr[r][c];arr[r][c] *;run(r, c 1, idx 1, arr, str, datas);run(r, c - 1, idx 1, arr, str, datas);run(r 1, c, idx 1, arr, str, datas);run(r - 1, c, idx 1, arr, str, datas);arr[r][c] old;}}int main() {int n 0;cin n;cin.get();vectorvectorchar arr;string str;for (int i 0; i n; i) {getline(cin, str);replace_if(str.begin(), str.end(), [](char ch) {return ch ,; }, );istringstream iss(str);vectorchar tmp;char x;while (iss x) {tmp.push_back(x);}arr.push_back(tmp);}getline(cin, str);vectorvectorint datas(1000, vectorint(2, 0));for (int i 0; i arr.size(); i) {for (int j 0; j arr.size(); j) {if (str[0] arr[i][j]) {run(i, j, 0, arr, str, datas);}}}if (!g_state) {cout N endl;return 0;}else {ostringstream oss;for (int i 0; i str.size(); i) {oss datas[i][0] , datas[i][1] ,;}string ans oss.str();ans.pop_back();cout ans endl;}return 0;
}