我需要一个代码来查找一个数组在另一个数组中的适合次数。用户将输入两个数组及其值的大小。 输出应如下所示:
***enter size of first array:***
11
***enter first array values:***
1 2 1 2 1 2 1 2 1 2 1
***enter size of second array:***
3
***enter second array values:***
1 2 1
***result: 5 times***
我提出的代码的一部分:
int v1Size = 5;
int v2Size = 3;
int vector1[] = {1,2,1,2,1};
int vector2[] = {1,2,1};
int counter = 0;
bool contain(int v1Pos) {
int j = 0;
int i = v1Pos;
int check = 0;
while ((j < v2Size) || (i < v1Size-v2Size)) {
for (int i; i < v1Size-v2Size; i++) {
if(vector2[j] == vector1[i]) {
check++;
j++;
}
}
}
if (check == v2Size) {
return true;
} else {
return false;
}
}
int main(){
for(int i = 0; i < v1Size; i++) {
if(contain(i)) {
counter++;
}
}
cout << counter << endl;
return 0;
}
在这种情况下,我定义了数组以简化调试,但它应该适用于每个数组:vector1的大小&lt; 500和矢量2的大小&lt; 100。
任何人都知道我该怎么做?
谢谢!
答案 0 :(得分:0)
检查vector1
的每个位置,如果该位置包含整个vector2
。如果是,请递增count
。增加位置。
伪代码
init count with 0
init pos1 with 0
while pos1 < v1Size - v2Size
init pos2 with 0
init match with true
while pos2 < v2Size
if vector1[pos1 + pos2] not equals vector2[pos2]
set match = false
break while loop
if match
increment count
increment pos1
答案 1 :(得分:-1)
您应该使用std::vector<int>
类型,而不是使用int数组,它可以具有任何大小。
然后,您可以使用std::search在向量中搜索向量。