牛客网练习题

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。

发布了9 篇原创文章 · 获赞 0 · 访问量 755

猜你喜欢

转载自blog.csdn.net/foreverboss/article/details/104213106