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

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

前言:


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

总结


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

相关文章
|
7天前
|
Java
每日一题《剑指offer》字符串篇之字符串的排列
每日一题《剑指offer》字符串篇之字符串的排列
53 0
每日一题《剑指offer》字符串篇之字符串的排列
|
7天前
|
Java 测试技术 Python
每日一题《剑指offer》字符串篇之表示数值的字符串
每日一题《剑指offer》字符串篇之表示数值的字符串
28 0
每日一题《剑指offer》字符串篇之表示数值的字符串
|
6月前
|
存储 算法 Serverless
代码随想录算法训练营第六天 | LeetCode 242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
代码随想录算法训练营第六天 | LeetCode 242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
45 0
代码随想录算法训练营第六天 | LeetCode 242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
|
9月前
|
算法 安全
代码随想录算法训练营第六天| 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
代码随想录算法训练营第六天| 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
|
8月前
|
算法 Java
【算法题目解析】杨氏矩阵数字查找
一道面试时可能遇到的算法问题,杨氏矩阵。可以重点关注思考方式,而不是死记硬背。
23 0
|
11月前
|
存储 算法 C++
【数据结构与算法】哈希表1:字母异位词 & 两数交集 & 快乐数 & 两数之和
【数据结构与算法】哈希表1:字母异位词 & 两数交集 & 快乐数 & 两数之和
48 0
Leetcode-每日一题856. 括号的分数
当前的位置不是字符串结尾,他一定是AB的形式,我们从当前位置为分割点s[0:i]为平衡字符串A,s[I + 1: n - 1]为平衡字符串B,两者分别进行分治,直到()的形式。
92 0
Leetcode-每日一题856. 括号的分数
|
机器学习/深度学习 NoSQL Shell
力扣刷题记录——344.反转字符串、345.反转字符串中的元音、349.两个数组的交集
力扣刷题记录——344.反转字符串、345.反转字符串中的元音、349.两个数组的交集
力扣刷题记录——344.反转字符串、345.反转字符串中的元音、349.两个数组的交集
力扣刷题记录——709. 转换成小写字母、771. 宝石与石头、704. 二分查找
力扣刷题记录——709. 转换成小写字母、771. 宝石与石头、704. 二分查找
力扣刷题记录——709. 转换成小写字母、771. 宝石与石头、704. 二分查找
|
Python
【蓝桥杯】字符逆序
【蓝桥杯】字符逆序
38 0