【发布时间】:2021-08-19 04:01:02
【问题描述】:
问题
有两个数组,一个包含大量数字 (arr1),可能有一些重复序列,例如 1,2,4 可能在此数组中重复多次。用户将分配另一个数组 (arr2)。
我需要一种方法来搜索arr1 以获取用户为arr2 提供的确切输入。为了使匹配有效,所有元素的顺序必须与用户输入的顺序完全相同。
例如,如果用户输入 1,2,4,3,则程序必须在 arr1 中按确切顺序找到 1,2,4,3,这意味着 arr1 中的 1,2,3,4不应该算作匹配。以下是我到目前为止所能想到的,但即使只有 2 个数组的第一个元素匹配,它也会返回 true。
for (int i=0; i<size1; i++)
{
for (int j = 0; j<size2; j++)
{
if(arr1[i] == arr2[j])
{
printf("found a match %d", j);
break;
}
else if (arr1[i] != arr2[j])
{
printf("not match");
break;
}
下面是完整的代码:-
#include <stdio.h>
#include <string.h>
int main()
{
int arr1[] = {1, 2, 4, 2, 2, 2, 1, 1, 2, 4, 3, 4, 4, 1, 2, 4, 4, 1, 3, 3};
int size1 = (int) (sizeof(arr1)/sizeof(arr1));
int arr2[] = {1, 2, 4};
int size2 = (int) (sizeof(arr2)/sizeof(arr2[0]));
int match = 0;
for (int i=0; i<size1; i++)
{
for (int j = 0; j < size2; j++) {
if (arr1[i] != arr2[j]) {
match = 1;
break;
}
}
}
if(match == 1){
printf("Not a match");
}else if(match == 0){
printf("The lists match");
}
return 0;
}
如果您查看arr1 和arr2,我需要一种方法来返回索引0、7、13,而且这仍然很粗糙,因为arr2 在技术上是动态的,因为它是由用户分配的,并且没有固定大小,只有arr1 会有固定大小。
【问题讨论】: