本题用暴力枚举,每次将b数组(第二段音频)里的m段(m为第一段音频的长度)与第一段音频比较,将最小的difference找出来即可。
int main()
{
int m,n,k;
int a[1010],b[1010];
int min=1e9,dif;
scanf("%d",&m);
for(int i=0;i<m;++i)
{
scanf("%d",&a[i]);
}
scanf("%d",&n);
for(int i=0;i<n;++i)
{
scanf("%d",&b[i]);
}
for(int i=0;i<n-m+1;++i)
{
k=0;
dif=0;
for(int j=i;j<=i+m-1;++j)
{
if(b[j]!=a[k])
dif+=(b[j]-a[k])*(b[j]-a[k]);
k++;
}
if(dif<min)
min=dif;
}
printf("%d",min);
return 0;
}
/*
4
5 6 3 4
9
3 4 5 6 3 3 3 3 5
*/
下面是我的自测用例