思路:直接暴力枚举,遍历第二个数组中每个子列与第一个数组的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;
}