思路:直接暴力枚举,遍历第二个数组中每个子列与第一个数组的difference,不过交的时候遇到一个问题,没有通过全部样例,通过多组自测用例尝试,发现数据小时没错,猜测是difference初始值的问题(一开始给difference开的1000,只过了5%,开了100000,过了25%),所以在遍历第一个时用第一组差值(变量sum)作为difference初始值,最后过了。
#include #include
using namespace std;
int main(void) { //读入数据
int len_short;
cin>>len_short;
int num1[1000];
for(int i=0;i<len_short;i++)
cin>>num1[i];
int len_long;
cin>>len_long;
int num2[1000];
for(int j=0;j<len_long;j++)
cin>>num2[j];
/枚举/
int difference;
for(int k=0;k<=len_long-len_short;k++)
{
int sum=0;
for(int i=k;i<k+len_short;i++)
{
sum+=pow(num1[i-k]-num2[i],2);
}
if(k==0)difference=sum;
if(sum<difference)
{
difference=sum;
}
}
cout<<difference;
return 0;
}