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);     
           
    }
  • 相关阅读:
    Maven属性
    安居客Android项目架构演进
    HttpClient 解说 (1) 基础
    linux 打包和压缩文件
    java AES-256加解密解决方法
    jdk8 分隔字符串最新方法
    springboot 过滤器,拦截器,切片的运用
    thinkphp 5.0手记
    如何使用UDP进行跨网段广播
    php multicast多播实现详解
  • 原文地址:https://www.cnblogs.com/dfguo/p/7016133.html
Copyright © 2011-2022 走看看