zoukankan      html  css  js  c++  java
  • 美团CodeM资格赛题 题1

    版权声明:本文为博主原创文章,未经博主允许不得转载。

    美团外卖的品牌代言人袋鼠先生最近正在进行音乐研究。他有两段音频,每段音频是一个表示音高的序列。现在袋鼠先生想要在第二段音频中找出与第一段音频最相近的部分。

    具体地说,就是在第二段音频中找到一个长度和第一段音频相等且是连续的子序列,使得它们的 difference 最小。两段等长音频的 difference 定义为:
    difference = SUM(a[i] - b[i])2 (1 ≤ i ≤ n),其中SUM()表示求和 
    其中 n 表示序列长度,a[i], b[i]分别表示两段音频的音高。现在袋鼠先生想要知道,difference的最小值是多少?数据保证第一段音频的长度小于等于第二段音频的长度。

    输入描述:
    第一行一个整数n(1 ≤ n ≤ 1000),表示第一段音频的长度。
    第二行n个整数表示第一段音频的音高(0 ≤ 音高 ≤ 1000)。
    第三行一个整数m(1 ≤ n ≤ m ≤ 1000),表示第二段音频的长度。
    第四行m个整数表示第二段音频的音高(0 ≤ 音高 ≤ 1000)。
    输出描述:
    输出difference的最小值
    输入例子:
    2
    1 2
    4
    3 1 2 4
    输出例子:
    0
    #include<stdio.h>
    int main()
    {
        int n,m,i,j,k,a[1000],b[1000];
        long int min=1000000000,dif;
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
        scanf("%d",&m);
        for(i=0;i<m;i++)
        {
            scanf("%d",&b[i]);
        }
        
        for(i=0;i<=m-n;i++)
            {
                k=i;dif=0;
                for(j=0;j<n;j++)
                {
                    dif=dif+(a[j]-b[k])*(a[j]-b[k]);
                    k++;
                }
                if(min>dif)min=dif;
            } 
        printf("%ld",min);     
           
    }
  • 相关阅读:
    使用静态工厂方法的好处和坏处
    xUtils3源码分析(一):view的绑定
    在laravel之外使用eloquent
    ruby里面的毒瘤
    ruby的代码风格
    ruby里面的属性访问器
    ruby里面module和class的区别
    unity里面查找所有物体
    android studio安装须知
    intellij系列ide配置
  • 原文地址:https://www.cnblogs.com/dfguo/p/7016133.html
Copyright © 2011-2022 走看看