牛客网——牛牛的数组匹配

简介: 牛客网——牛牛的数组匹配

前言:


不知不觉连续更了21天,(为书包而奋斗),和大家一起学习了21天,虽然有时候太忙就水文章,但是还是学到了很多,认识了很多小伙伴,真的很开心~

今天咱一起学习一下牛牛的数组匹配哈。

一、牛牛的数组匹配


题目:

牛牛的数组匹配_牛客题霸_牛客网

描述


牛牛刚学会数组不久,他拿到两个数组 a 和 b,询问 b 的哪一段连续子数组之和与数组 a 之和最接近。

如果有多个子数组之和同样接近,输出起始点最靠左的数组。

输入描述:


第一行输入两个正整数 n 和 m ,表示数组 a 和 b 的长度。

第二第三行输入 n 个和 m 个正整数,表示数组中 a 和 b 的值。

输出描述:


输出子数组之和最接近 a 的子数组

二、解题过程


#include<stdio.h>
/*思路:从完整数组开始,不断去掉前面的一个元素,用剩下的子数组进行下轮比较;
*每轮判断规则(如果满足减去数组2当前的最后一个元素后,如果和数组1差值变小了,
*就继续减去尾元素,直到满足差值最小,得到本轮最优解; 用该值和下一轮进行比较,
*如果下一轮差值更小,则继续切割数组,找更下一轮,直到不满足,然后根据i,j位置输出数组元素;
*/
#include <stdio.h>
int num(int a,int b)
{
  if(a>=b)
  return a-b;
  else
  return b-a;
}
int main()
{
    int n,m;
    scanf("%d %d",&n,&m);
    int a[100]={0};
    int b[100]={0};
    int sum1=0,sum2=0,min,k,l;
    for(int i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    for(int i=0;i<m;i++)
    {
        scanf("%d",&b[i]);
    }
  for(int i=0;i<n;i++)
  {
    sum1+=a[i];
  }
  min=sum1;
  for(int i=0;i<m;i++)
  {
    sum2=b[i];
    for(int j=i+1;j<=m;j++)
    {
      if(num(sum1,sum2)<min)
      {
        min=num(sum1,sum2);
        k=i;
        l=j;
      }
      sum2+=b[j];
    }
  }
  for(int i=k;i<l;i++)
  {
    printf("%d ",b[i]);
  }
    return 0;
}

总结


以上就是今天要讲的内容,本文只是简单介绍了一种解题方法,希望对大家有帮助~

相关文章
|
开发框架 自然语言处理 前端开发
【第25期】一文读懂React企业级前端应用框架Umi
【第25期】一文读懂React企业级前端应用框架Umi
847 0
|
Ubuntu
ubuntu 22.04 阿里源
ubuntu 22.04 阿里源
13645 0
|
Ubuntu Python
Ubuntu安装pip并切换国内源
Ubuntu安装pip并切换国内源
4224 0
Ubuntu安装pip并切换国内源
|
C++ Python
VS Code按住ctrl不能跳转到定义/函数(Python)
VS Code按住ctrl不能跳转到定义/函数(Python)
4173 0
VS Code按住ctrl不能跳转到定义/函数(Python)
|
1月前
|
自然语言处理 JavaScript 前端开发
JavaScript 闭包原理和实践深度解析
闭包是JavaScript核心概念,指函数与其词法环境的组合。它能访问并保留外部变量,实现私有变量、模块化、柯里化等功能。合理使用可提升代码封装性与复用性,但需注意内存管理,避免过度引用导致性能问题。掌握闭包,是深入理解JS作用域与执行机制的关键。
181 0
|
8月前
|
移动开发 前端开发 JavaScript
Vue与React两大前端框架的主要差异点
以上就是Vue和React的主要差异点,希望对你有所帮助。在选择使用哪一个框架时,需要根据项目的具体需求和团队的技术栈来决定。
500 83
antd table合并行或者列(动态添加合并行、列)
在Ant Design的Table组件中实现行或列的合并,通过动态计算数据源中的`rowSpan`或`colSpan`属性来控制,支持对特定字段进行行或列合并,包括多选框列的合并处理。
1915 3
antd table合并行或者列(动态添加合并行、列)
vscode设置自动保存步骤
vscode设置自动保存就不用每次要运行时候去先保存一下才能加载新页面了
19619 0
vscode设置自动保存步骤
|
前端开发
Promise的链式调用
Promise的链式调用是指在一个Promise对象上连续调用多个then方法的过程。通过链式调用,可以将多个异步操作按照顺序执行,并且可以在每个操作完成后处理返回的结果。
358 0