222.音乐研究:
解题思路:
首先,必须要使用到第一段得全部数据而且还是连续,这样我们就只要找到第二段中得第一个数,后面就是循环相减找到最小即可
代码:
#include<iostream>
#include<string>
#include<algorithm>
#include<math.h>
#include<cmath>
#define INT_MAX 2147483647
#define INT_MIN (-INT_MAX - 1)
using namespace std;
const int maxn=1003;
int a[maxn],b[maxn];
int main() {
int m,n;
while(cin>>n) {
long long res=INT_MAX; //必须要在循环时,重置为初始值
for(int i=0;i<n;i++) {
cin>>a[i];
}
cin>>m;
for(int i=0;i<m;i++) {
cin>>b[i];
}
int temp=0;
for(int i=0;i<m-n;i++) {
int k=i;
for(int j=0;j<n;j++) {
int temp2=abs(a[j]-b[k++]);
temp+=temp2*temp2;
}
if(res>temp) {
res=temp;
}
temp=0;
}
cout<<res<<endl;
}
return 0;
}
总结:
想通逻辑后代码不难,在循环输入时和在计算最小res值得时候需要注意要重置得数:res得初始值INT_MAX和temp=0。