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

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

前言:


不知不觉连续更了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;
}

总结


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

相关文章
|
测试技术
Pytest----多进程并行执行自动化测试脚本
Pytest----多进程并行执行自动化测试脚本
1233 0
Pytest----多进程并行执行自动化测试脚本
|
JavaScript
Element-ui中 使用图片查看器(el-image-viewer) 预览图片
Element-ui中 使用图片查看器(el-image-viewer) 预览图片
2805 1
Element-ui中 使用图片查看器(el-image-viewer) 预览图片
|
安全 Unix Linux
Linux基本指令(下)
tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容.
|
IDE 开发工具
mac 系统下安装consolas字体
mac系统下没有预装consolas字体,但是在JetBrains的IDE下,一直都觉得consolas字体看的最舒服。安装步骤如下:
1710 0
mac 系统下安装consolas字体
|
存储 数据采集 数据可视化
从零搭建Pytorch模型教程(一)数据读取 ​
本文介绍了classdataset的几个要点,由哪些部分组成,每个部分需要完成哪些事情,如何进行数据增强,如何实现自己设计的数据增强。然后,介绍了分布式训练的数据加载方式,数据读取的整个流程,当面对超大数据集时,内存不足的改进思路。 欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、最新论文解读、各种技术教程、CV招聘信息发布等。关注公众号可邀请加入免费版的知识星球和技术交流群。
|
存储 C++ 编译器
C|C++中的静态全局变量,静态局部变量,全局变量,局部变量的区别
static 有两种用法:面向过程程序设计中的static 和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明 static 在类中的作用。    一、面向过程设计中的static    全局变量、局部变量、静态全局变量、静态局部变量的区别   C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为 6种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。
2262 0
|
7天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
6天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
本文讲解 Prompt 基本概念与 10 个优化技巧,结合学术分析 AI 应用的需求分析、设计方案,介绍 Spring AI 中 ChatClient 及 Advisors 的使用。
323 130
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话