如果我有两个整数数组:
a = {2,2,3,3,5,6,7,2,2,2}
,b = {6,-5,2,2,2,2,4,5,3,3}
和一个整数k = 2
,它定义了连续的序列数(两个数组中的SAME - [2,2]
,[3,3]
,[2,2,2]
in“a”/ {{ 1}},{b}中的[2,2,2,2]
,如何为每个数字序列运行单独的计数?
我以这种方式思考算法:
[3,3]
对每个元素序列开始“计数”可以确保计数是精确的,但是这样,当检查数组int count = 1;
for (int i=0; i<N; i++){
if ( a[i] == a[i+1] && b[i] == b[i+1] && a[i] == b[i] ){
count++;
}
if ( count >= k ){
condition = true;
}
}
的第二个和第三个位置时,它也将计算元素a
{而不是停留在3
。
有什么建议吗?
答案 0 :(得分:2)
看到你的评论“函数是布尔值”,我想你想知道是否有一个相同数量的长度k
或更多的序列,这是两个输入数组的子序列。
似乎子序列不必出现在两个数组中的相同位置(否则练习就不那么有趣了。)
假设我猜对了,你可以使用以下想法:
(p1,p2)
,其中p1
是第一个数组中的位置,p2
是第二个数组中的位置。0...N-k
作为位置,以避免溢出(读取超过数组末尾)k
数字是否相同true
;否则false
您可以使用两个嵌套循环来实现(1)和(2),如下所示:
for (p1 = 0; p1 <= N - k; ++p1)
{
for (p2 = 0; p2 <= N - k; ++p2)
{
...
}
}
您可以使用单独的函数或嵌套循环来检查条件(3)。