【发布时间】:2020-02-11 05:31:18
【问题描述】:
所以基本上我的问题是: 我收到一个整数数组和一个要查找的整数模式数组。 我需要返回第一个数组中有多少个模式段。
例如:
v=[5, 2, 2, 3, 4, 4, 4, 4, 1, 1, 2, 2]
p=[2, 2]
这需要返回类似“v 中有 2 段 p”。
我已经尝试过了,但我认为这不是正确的方法:
int main()
{
int v[] ={5, 2, 2, 3, 4, 4, 4, 4, 1, 1, 2, 2};
int p[] ={2,2};
int sizev, sizep;
printf("%d", count_segments_repeated_ints(v,sizev,p,sizep));
return 0;
}
int count_segments_repeated_ints(int v[], int sizev, int p[], int sizep){
int i,j, ocr=0;
//sizeof
for(i=0; i < sizev; i++){
for(j=0; j < sizep; j++){
if(v[i]==p[j] && v[i+1]==p[j+1]){
ocr++;
}
}
return ocr;
}
}
【问题讨论】:
-
{1, 2, 2, 2, 3}中有多少个p? -
使用
int sizev = sizeof(v) / sizeof(v[0]);。最好使用类型size_t而不是int,即size_t sizev = sizeof(v) / sizeof(v[0]);。对count_segments_repeated_ints的参数使用相同的类型。 -
@pmg 如果我们认为 p 是一个静态数组并且始终保持这样,我认为答案将是 2。如果 p 是它的重新维度而不是特定于这两个数字,这取决于。
-
我只是想确保
v的相同元素可以属于不同的段......问题也可以禁止这样做,并且您的示例不够具体。
标签: c arrays function definition sub-array