怎样求一个数组在另一个数组中的位置?

怎样求一个数组在另一个数组中的位置
用初级的c++

完全匹配吗?
代码如下:

#include <iostream>
using namespace std;
int main()
{
    int a[10]={1,2,3,4,5,6,7,8,9,10};
    int b[3]={3,4,5};
    int i=0,j=0;
    //查找b在a中的位置
    int pos = -1;
    while(i<=(10-3)) //10是数组a的大小,3是数组b的大小
    {
        for (j=0;j<3;j++)
        {
            if(a[i+j] != b[j])
                break;
        }
        if(j==3)
        {
            pos = i;
            break;
        }
        i++;
    }
    if(pos == -1)
        cout << "b不在a中"<<endl;
    else
        cout << "b在a中的位置:"<< pos;
    return 0;
}

用循环嵌套,找到一个元素后连续比较后面的元素。

不是很明白你的问题是什么意思?
你是指

  • 数组1:efg,
  • 数组2:abcdefg
  • 其中数组1的内容出现在数组2的4号下标。 这种吗

如果是这种的话,那么你应该问的是串匹配算法。即一个字符串是否为另一个字符串的子串,如果是找出它所在的位置。 请参考:

算法 | 串匹配算法之KMP算法及其优化_灰猫-CSDN博客 KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。KMP算法的时间复杂度O(m+n)。待匹配串s:A B... https://blog.csdn.net/weixin_43919932/article/details/102974662?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163637773816780264080092%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=163637773816780264080092&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v2~rank_v29-1-102974662.pc_v2_rank_blog_default&utm_term=%E4%B8%B2%E5%8C%B9%E9%85%8D&spm=1018.2226.3001.4450